我需要在Raturofit到达超时时为用户设置自定义消息。我已经搜索了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
方法,这是不理想的。
在翻新网络呼叫的故障块上。
@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 {
.....
}
}
在您的错误回调方法中使用以下代码
@Override
public void error(Throwable exception) {
String errorMsg
if (exception instanceof java.net.SocketException || exception instanceof java.net.SocketTimeoutException) {
errorMsg = "Your custom message here"
}
}