带有Retrofit的java.net.SocketTimeoutException

时间:2017-05-12 14:54:49

标签: android retrofit socket-timeout-exception

我使用Retrofit和OkHttp连接到服务器。 在大多数情况下,它运作良好。但有些情况下会失败。 有时HTTP FAILED:java.net.UnknownHostException ,有时候 java.net.SocketTimeoutException 。这个错误就在我使用家庭wifi连接到服务器的时候。但是当我使用移动网络时它很好并且没有问题。 使用模拟器是好的。它只发生在真实设备上。而且有时候不是所有时间。

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
    httpClient.readTimeout(30, TimeUnit.SECONDS)
            .connectTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(30, TimeUnit.SECONDS)
            .build();



    retrofit = new Retrofit.Builder()
            .baseUrl(ClientConfigs.REST_API_BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .client(httpClient.build())
            .build();


compile 'com.squareup.retrofit2:retrofit:2.2.0'
 compile 'com.squareup.retrofit2:converter-gson:2.1.0'

1 个答案:

答案 0 :(得分:0)

有类似的问题解决了它:

 OkHttpClient client = new OkHttpClient.Builder()
                    .readTimeout(1, TimeUnit.MINUTES)
                    .writeTimeout(1, TimeUnit.MINUTES)
                    .connectTimeout(1, TimeUnit.MINUTES)
                    .build();