当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
方法理想的。
答案 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"
}
}