Android 改装java.net.SocketTimeoutException
改装电话:Android 改装java.net.SocketTimeoutException,android,retrofit,Android,Retrofit,改装电话: RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("BASE URL") .setLogLevel(RestAdapter.LogLevel.FULL) .setClient(new OkClient(getOkHttpClient())) .build(); 依赖项: compile 'com.squareup.okhttp:okhtt
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("BASE URL")
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(new OkClient(getOkHttpClient()))
.build();
依赖项:
compile 'com.squareup.okhttp:okhttp:2.7.2'
compile 'com.squareup.retrofit:retrofit:1.9.0'
错误:
用户id=XXXX&项目id=X&项目数量=1&项目成本=XXXX&付款id=stripe&流程费用=XXX&总成本=XXX&信息系统管理=0&协商id=&tips=XXX&卡片id=XXXX
09-07 11:45:08.628 23473-24373/com.bridgellc.bridge D/改装:-->
结束HTTP(177字节正文)09-07 11:45:18.635
23473-24373/com.bridgellc.bridge D/改装:-错误http:XXXXXX
09-07 11:45:18.650 23473-24373/com.bridgellc.bridge D/改装:
java.net.SocketTimeoutException
您可以通过在android配置文件中添加
android:vmSafeMode=“true”
来解决此问题。
关于上述问题的讨论可以在github中找到。
尝试为您的OkHttp2客户端设置超时。首先创建一个OkHttp2客户端
OkHttpClient client = new OkHttpClient.Builder()
client.setConnectTimeout(5, TimeUnit.MINUTES);
client.setReadTimeout(5, TimeUnit.MINUTES);
.build();
然后将其作为默认客户端添加到改型中
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("BASE_URL")
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(client).build();
这取决于各种因素,其中之一是超时,如
connectionTimeout
等。如果服务器在超时内没有响应,它将抛出SocketTimeoutException
。您可以尝试增加okhttp的默认timeout
private static OkHttpClient okClient() {
return new OkHttpClient.Builder()
.connectTimeout(1, TimeUnit.MINUTES)
.writeTimeout(1, TimeUnit.MINUTES)
.readTimeout(1, TimeUnit.MINUTES)
.build();
}
并将其设置为改装
实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Util.APP_UPDATE)
.client(RestClient.okClient())
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
正确地解释问题。你什么时候收到这个错误?您尝试了什么解决方案?改型默认Okclient连接超时为10秒。但我更改为连接时间值为20秒,与您的方法相同。RestAdapter RestAdapter=new RestAdapter.Builder().setEndpoint(AppConstants.BASE_URL).setLogLevel(RestAdapter.LogLevel.FULL).setClient(new-OkClient(getOkHttpClient()).build()//Ok client等待时间自定义私有OkHttpClient getOkHttpClient(){final OkHttpClient OkHttpClient=new OkHttpClient();OkHttpClient.setReadTimeout(20,TimeUnit.SECONDS);OkHttpClient.setConnectTimeout(20,TimeUnit.SECONDS);返回OkHttpClient;}您在哪里更改了超时值?您是否尝试了我建议的代码?客户端等待时间自定义私有OkHttpClient getOkHttpClient(){final OkHttpClient OkHttpClient=new OkHttpClient();OkHttpClient.setReadTimeout(20,TimeUnit.SECONDS);OkHttpClient.setConnectTimeout(20,TimeUnit.SECONDS);返回OkHttpClient;}–您可以尝试使用较大的超时值吗?比如说,120秒?.addConverterFactory(GsonConverterFactory.create(gson))“不受支持依赖项:编译'com.squareup.Reformation:Reformation:1.9.0'我没有使用“编译'com.squareup.Reformation2:Reformation:2.1.0'”“compile'com.squareup.Reformation:Reformation:1.9.0'”两者都是不同的。这只是关于将custom Ok client设置为Reformation实例相同的参考。在1.9的情况下,您可以将其设置为RestaAdapter。android:vmSafeMode=“true”我在清单文件中已经提到了该代码。