Android 改装2.6.2不适用于沃达丰移动数据,但适用于WiFi
请帮助我,我的一些应用程序用户抱怨或反馈说,他们的应用程序不适用于移动数据(沃达丰4G),但适用于wifi 我正在使用改型-2.6.2和okhttp3-4.2.2.Android 改装2.6.2不适用于沃达丰移动数据,但适用于WiFi,android,android-studio,networking,retrofit,retrofit2.6,Android,Android Studio,Networking,Retrofit,Retrofit2.6,请帮助我,我的一些应用程序用户抱怨或反馈说,他们的应用程序不适用于移动数据(沃达丰4G),但适用于wifi 我正在使用改型-2.6.2和okhttp3-4.2.2. Retrofit.Builder() .baseUrl(baseurl) .addConverterFactory(GsonConverterFactory.create()) .client(getClient()) .build() fun getClient(): OkHttpClient {
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是在亚马逊服务器上使用http和https制作的
我身边缺少什么东西请给我解决方案
提前感谢。将
网络安全配置添加到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>
并确保在清单
文件中授予互联网
权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false"/>
将usebrary'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'
}
这是一些类似沃达丰网络的4G网络问题。此网络中TCP连接的连接时间connectTimeout始终处于连接状态,因此api在2分钟之前无法连接,因为提到了2分钟的超时时间
因此,我通过将TCP连接时间connectTimeout减少到1秒来解决这个问题,下面是代码:
OkHttpClient.Builder()
.addInterceptor(HeaderIntercepter())
.callTimeout(2, TimeUnit.MINUTES)
.connectTimeout(1, TimeUnit.SECONDS)
.readTimeout(1, TimeUnit.MINUTES)
.writeTimeout(1, TimeUnit.MINUTES)
.build()
如果您的api或url不需要通过改装在数据发送和接收之间建立TCP连接,那么您可以这样做,现在对我来说效果很好。@DeePanShu尝试使用legacy
希望这对您有用,第一次加载大约需要2-3分钟的时间,之后效果会很好
OkHttpClient.Builder()
.addInterceptor(HeaderIntercepter())
.callTimeout(2, TimeUnit.MINUTES)
.connectTimeout(1, TimeUnit.SECONDS)
.readTimeout(1, TimeUnit.MINUTES)
.writeTimeout(1, TimeUnit.MINUTES)
.build()