بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در ارتباط HTTPS با رتروفیت

مدیریت گفتگو
132643 7 سال پیش
آخرین تغییر: 7 سال پیش

با سلام و وقت بخیر
من از رتروفیت برای اتصال به سرور استفاده می کنم.
برای ارتباط از کد زیر استفاده کردم.

public static Retrofit getClient() {
    if (retrofit == null) {

        retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    }

    return retrofit;
}

در اندروید 5 و بالاتر مشکلی در اتصال نیست و پایین تر متصل نمیشه برای اندروید 4.4 خطای Handshake میده و برای پایین تر از 4.4 هیچ خطایی هم نمیده.
روش این لینک و چندین مورد دیگر امتحان کردم جواب نداد.
https://answers.uncox.com/android/question/29006/%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-https-%D8%AF%D8%B1-%D9%86%D8%B3%D8%AE%D9%87-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%DB%8C%D9%86-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF

https://stackoverflow.com/questions/53767097/my-app-dont-work-with-self-signed-ssl-in-android-5

در لینک بالا گفتن که باید از کانفیگ آپاچی TLS درس بشه که هاستینگ به دلیل اشتراکی بودن این کار را نمی کند!
لطفا یک راه حل بفرمایید.ممنون تشکر

نظرات

پاسخ‌ها 1

hossein_hr10 7 سال پیش

سلام توی header برای تمامی requestهایی که دارین یه User-Agent بزارین تست کنین

 
val gsonFactory = GsonConverterFactory.create()
val httpClient = OkHttpClient.Builder()
val logging = HttpLoggingInterceptor()

logging.level = HttpLoggingInterceptor.Level.BODY
httpClient.addInterceptor(logging)
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.addNetworkInterceptor { chain ->
chain.proceed(
chain.request()
.newBuilder()
.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0")
.build()
)
}

builder = Retrofit.Builder()
.baseUrl(baseUrl)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(gsonFactory)
.client(httpClient.build())
retrofit = builder.build()

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .