Android(安卓)OKHTTP 网络请求出错重连---http拦
16lz
2021-01-24
参考链接:https://www.jianshu.com/p/ea2055db3dd3
OkHttpClient client = new OkHttpClient.Builder() .retryOnConnectionFailure(true)//默认重试一次,若需要重试N次,则要实现拦截器。 .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .writeTimeout(20, TimeUnit.SECONDS) .build();Retrofit retrofit = new Retrofit.Builder() .baseUrl("xxx") //设置网络请求的Url地址 .addConverterFactory(GsonConverterFactory.create()) //设置数据解析器 .client(client) .build();
以上的重试只能重试一次,若需要重试N次,可以通过设置拦截器
/** * 自定义的,重试N次的拦截器 * 通过:addInterceptor 设置 */public static class Retry implements Interceptor { public int maxRetry;//最大重试次数 private int retryNum = 0;//假如设置为3次重试的话,则最大可能请求4次(默认1次+3次重试) public Retry(int maxRetry) { this.maxRetry = maxRetry; } @Override public Response intercept(@NonNull Chain chain) throws IOException { Request request = chain.request(); Response response = chain.proceed(request); Log.i("Retry","num:"+retryNum); while (!response.isSuccessful() && retryNum < maxRetry) { retryNum++; Log.i("Retry","num:"+retryNum); response = chain.proceed(request); } return response; }}
当在有网络的情况下,网络是畅通的,但获取失败后,那么会跑以上的拦截了,重新尝试N次。
更多相关文章
- android network,gps定位切换
- 获得联系人姓名,相关电话以及邮件地址sdk2.0
- Android(安卓)中使用 AsyncTask 异步读取网络图片
- android POST请求
- Android监听WIFI网络的变化并且获得当前信号强度
- JS获取移动端系统信息(操作系统、操作系统版本、横竖屏状态、设
- Android(安卓)8.0无法调用Geocoder 中的getFromLocation()解决办
- 关于Android(安卓)Https网络连接失败奇葩问题 ExtCertPathValida
- Eclipse+android 开发配置步骤