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”我在清单文件中已经提到了该代码。