android - 带有改造的 java.net.SocketTimeoutException

标签 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'

最佳答案

我猜你的家庭 wify 并没有看起来那么稳定。

当无法解析指定的主机时,OkHttpClient 抛出 UnknownHostException(例如,当您没有互联网时会发生这种情况)。

对于 SocketTimeout,OkHttp 会在达到请求超时时抛出此消息(例如,如果您的服务器需要超过 30 秒才能发送回结果,但这也可能是由您与服务器的互联网连接引起的)

关于android - 带有改造的 java.net.SocketTimeoutException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940735/

相关文章:

android - Android 自动调整 TextView 的动态省略号支持

Android Rest 服务引擎

android - AnimationDrawable.isRunning() 总是返回 true

android - 收到来自 esp8266 的响应时流改造意外结束

java.lang.NumberFormatException : Expected an int but was 0. 6 在第 1 行第 8454 列

java - 当 ConnectTimeout 和 ReadTimeout 无限时出现 SocketTimeoutException?

Android 4.3 : Native crash in unkown. 未知

android - 如何在 Android 的 Retrofit 中获取 header 响应?

android - 使用任何IP和任何端口号android监听数据报套接字

java - Google map 和 java.net.SocketTimeoutException : Read timed out