Retrofit中的自定义超时消息

时间:2017-09-27 09:31:10

标签: java android retrofit okhttp

当Retrofit达到超时时,我需要为用户设置自定义消息。我搜索了stackoverflow,无法找到解决方案。我也通过github进行了搜索并找到了这个(可能是我负责此消息的那一行):

ConnectException ce = new ConnectException("Failed to connect to " + route.socketAddress());

这是在课程okhttp/src/main/java/okhttp3/internal/connection/RealConnection.java

所以我去了那个班级,因为它属于OkHttp lib,所以不允许我编辑这个消息。

有没有人知道如何使用我自己的自定义超时处理程序?

相关的build.gradle条目:

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'

编辑:

下面给出的两个解决方案都可能工作,但它真的很丑陋,而且我必须在大约70-80个位置实际更改onFailure方法理想的。

2 个答案:

答案 0 :(得分:1)

关于改造网络呼叫的故障块。

@Override
public void onFailure(Call<Void> call, Throwable t) {
    if (t.toString().contains("SocketTimeoutException")) {
            // set your custom message here
            //view.showToast(R.string.poor_internet_connection);
    } else {
          .....
    }
}

答案 1 :(得分:0)

在您的错误回调方法中使用以下代码

@Override
public void error(Throwable exception) {
     String errorMsg
     if (exception instanceof java.net.SocketException || exception instanceof java.net.SocketTimeoutException) {
        errorMsg = "Your custom message here"
    }
}