如何解决改造API调用会在互联网连接较弱时引发IOException异常,但其他应用例如Youtube可以正常工作
互联网连接中断时,Retrofit API调用会引发IOException异常,但Youtube等其他应用程序仍可正常工作。
这是我的apiclient类。
公共类Loginapiclient {
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if(retrofit == null)
{
Gson gson = new GsonBuilder()
.setLenient()
.create();
OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient.Builder();
okHttpClientBuilder.readTimeout(120,TimeUnit.SECONDS)
.connectTimeout(120,TimeUnit.SECONDS)
.writeTimeout(120,TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build();
okHttpClientBuilder.addInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Request request = original.newBuilder()
.addHeader("content-type","application/json")
.addHeader("device_type","android")
.addHeader("Connection","close")
.method(original.method(),original.body())
.build();
Log.e("Loginapiclient",""+request.toString());
return chain.proceed(request);
}
});
OkHttpClient client = okHttpClientBuilder.build();
retrofit = new retrofit2.Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
.build();
}
return retrofit;
}
}
@Override
public void onFailure(Call<List<TodayEarning>> call,Throwable t) {
if(t instanceof IOException) {
earningsPresenter.ondisplayMsg("Network connection error.");
}else if(t instanceof TimeoutException) {
earningsPresenter.ondisplayMsg("Connection timeout,please check your internet connection.");
}else {
earningsPresenter.ondisplayMsg("Server is not responding.");
}
}
});
在互联网连接较弱时,显示网络连接错误。如果有人有解决方案,请提供帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。