Retrofit 2.6.2 не работает с мобильными данными Vodafone, но работает нормально по WiFi - PullRequest
0 голосов
/ 20 апреля 2020

Пожалуйста, помогите мне Некоторые пользователи моего приложения жалуются или дают отзывы, что их приложение не работает с мобильными данными (Vodafone 4G) , но работает по Wi-Fi.

Я использую Retrofit-2.6.2 и okhttp3 - 4.2.2.

Retrofit.Builder()
    .baseUrl(baseurl)
    .addConverterFactory(GsonConverterFactory.create())
    .client(getClient())
    .build()

fun getClient(): OkHttpClient {
    return OkHttpClient.Builder().addInterceptor(HeaderIntercepter())
        .readTimeout(2, TimeUnit.MINUTES)
        .writeTimeout(2, TimeUnit.MINUTES)
        .connectTimeout(2, TimeUnit.MINUTES)
        .build()
}

API создаются на сервере Amazon с использованием http и https оба.

Чего не хватает с моей стороны, пожалуйста, дайте мне решение?

Заранее спасибо.

1 Ответ

0 голосов
/ 20 апреля 2020

Добавить network-security-config в папку res / xml

<?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
      <base-config cleartextTrafficPermitted="true">
       <trust-anchors>
        <certificates src="system" />
       </trust-anchors>
      </base-config>
    </network-security-config>

Добавить строку в manifest file application tag

android:networkSecurityConfig="@xml/network_security_config"

И убедиться, что вы даете internet разрешение в manifest файле

<uses-permission android:name="android.permission.INTERNET" />

Также добавьте это в manifest файле

 <uses-library
        android:name="org.apache.http.legacy"
        android:required="false"/>

и добавьте useLibrary 'org.apache.http.legacy' в сборку приложения

android {
compileSdkVersion 28
defaultConfig {
    applicationId "your_application_id"
    minSdkVersion 15
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    useLibrary 'org.apache.http.legacy'
}
...