问题描述
互联网连接中断时,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 (将#修改为@)