参考链接: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次。

更多相关文章

  1. android network,gps定位切换
  2. 获得联系人姓名,相关电话以及邮件地址sdk2.0
  3. Android(安卓)中使用 AsyncTask 异步读取网络图片
  4. android POST请求
  5. Android监听WIFI网络的变化并且获得当前信号强度
  6. JS获取移动端系统信息(操作系统、操作系统版本、横竖屏状态、设
  7. Android(安卓)8.0无法调用Geocoder 中的getFromLocation()解决办
  8. 关于Android(安卓)Https网络连接失败奇葩问题 ExtCertPathValida
  9. Eclipse+android 开发配置步骤

随机推荐

  1. 27 Android(安卓)ActionBar
  2. Android(安卓)eMMC booting
  3. android shape stroke
  4. android 自动换行
  5. 夜间模式 values-night
  6. Smali语法基础知识
  7. windows vista 下安装 Android(安卓)USB
  8. Android(安卓)shap Animation
  9. Android-Handler使用
  10. 安卓开源框架集合