retrofit设置单个请求的超时
本文系转载,主要代码来源为
https://github.com/square/retrofit/issues/2561
定义超时的拦截器
/*** 自定义的超时拦截器*/
public class MyTimeoutInterceptor implements Interceptor {public static final String CONNECT_TIMEOUT = "CONNECT_TIMEOUT";public static final String READ_TIMEOUT = "READ_TIMEOUT";public static final String WRITE_TIMEOUT = "WRITE_TIMEOUT";@Overridepublic Response intercept(Chain chain) throws IOException {int connectTimeout = chain.connectTimeoutMillis();int readTimeout = chain.readTimeoutMillis();int writeTimeout = chain.writeTimeoutMillis();Request request = chain.request();String connectNew = request.header(CONNECT_TIMEOUT);String readNew = request.header(READ_TIMEOUT);String writeNew = request.header(WRITE_TIMEOUT);if (!CommonUtil.isEmpty(connectNew)) {connectTimeout = Integer.parseInt(connectNew);}if (!CommonUtil.isEmpty(readNew)) {readTimeout = Integer.parseInt(readNew);}if (!CommonUtil.isEmpty(writeNew)) {writeTimeout = Integer.parseInt(writeNew);}return chain.withConnectTimeout(connectTimeout, TimeUnit.MILLISECONDS).withReadTimeout(readTimeout, TimeUnit.MILLISECONDS).withWriteTimeout(writeTimeout, TimeUnit.MILLISECONDS).proceed(request);}
}
创建retrofit的实例,添加拦截器
private RetrofitSingletonWhjk() {HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(10 * 1000, TimeUnit.MILLISECONDS).readTimeout(10 * 1000, TimeUnit.MILLISECONDS).writeTimeout(10 * 1000, TimeUnit.MILLISECONDS).addInterceptor(new MyTimeoutInterceptor()).addInterceptor(loggingInterceptor).build();Gson gson = GsonFactory.getInstance().generateGson();String baseUrl = "http://192.168.0.138:8080/test/";mRetrofit = new Retrofit.Builder().baseUrl(baseUrl).client(okHttpClient).addConverterFactory(GsonConverterFactory.create(gson)).build();}
请求时设置头部
/*** 上传* @param file 文件* @param authorization token*/@Multipart@Headers({"CONNECT_TIMEOUT:600000", "READ_TIMEOUT:600000", "WRITE_TIMEOUT:600000"})@POST("upload")Call<Result<Object>> upload(@Part MultipartBody.Part file);
retrofit设置单个请求的超时相关推荐
- 设置AFNetworking网络请求的超时时间
设置AFNetworking网络请求的超时时间 也许大家使用的时候已经察觉到,设置AFNetworking的超时时间并不管用,但可以用特殊的方式来处理. 以下是笔者基于AFNetworking2.5. ...
- axios请求超时,设置重新请求的完美解决方法
自从使用Vue2之后,就使用官方推荐的axios的插件来调用API,在使用过程中,如果服务器或者网络不稳定掉包了, 你们该如何处理呢? 下面我给你们分享一下我的经历. 具体原因 最近公司在做一个项目, ...
- go http.Get请求 http.Post请求 http.PostForm请求 Client 超时设置
http中有Get/Post/PostForm方法 也可以通过http包中设置client 请求配置 ,然后通过client.Do方法实现请求 下demo中功能都实现,其中有详细说明: package ...
- axios请求失败重新发起请求_axios请求超时,设置重新请求的完美解决方法
自从使用Vue2之后,就使用官方推荐的axios的插件来调用API,在使用过程中,如果服务器或者网络不稳定掉包了, 你们该如何处理呢? 下面我给你们分享一下我的经历. 具体原因 最近公司在做一个项目, ...
- 设置HTTP请求超时自动重发
Java Apcahe的HTTPClient工具Http请求当请求超时时底层会默认进行重发,默认重发次数为3次,在某些情况下为了防止重复的请求,需要将自动重发覆盖. 设置HTTP参数,设置不进行自动重 ...
- PHP cURL可以在单个请求中检索响应标头和正文吗?
本文翻译自:Can PHP cURL retrieve response headers AND body in a single request? Is there any way to get b ...
- Python-requests请求的超时时间
python程序根据url从互联网上批量下载图片时,设置HTTP或Socket超时,来防止爬虫爬取某个页面时间过长,导致程序卡置不前. 一种解决方案是全局设置: import socket socke ...
- Ajax请求session超时处理流程(DWZ)
DWZ-Java框架Ajax请求session超时处理思路: 1)SessionValidateFilter统一验证session是否超时 2)SessionValidateFilte ...
- Feign Hystrix (HystrixCommonKey) 设置单独接口的超时时间和FallBack
Feign设置单独接口的超时时间和FallBack(HystrixCommonKey) HystrixCommonKey生成方法:类名#方法名(入参类型) final class Default ...
最新文章
- jQuery中用ajax访问php接口文件
- 基础回顾(正则、循环、和、 int和Integer、String /StringBuffer、Array和ArrayList、值传递和引用传递、 Lamda、java8)
- MVC根据CheckBox的Value值选中对应的复选框及获取选中的Value值
- 5G NR 频率 带宽 栅格
- caffe学习路的起点
- plantUml活动图(新语法)
- 数据结构与算法之-----链表(List)
- vue 自定义指令_vue 自定义指令
- mysql外键可以是空吗_带外键的表列可以为NULL吗?
- Thinkphp3.2+ 微信小程序图片上传
- Internet Download Manager永久版功能强大的网络下载器
- snmp - 简单网络管理协议
- python 读取geotiff_python gdal 写GeoTiff文件
- 今日头条推荐算法原理全文详解
- java tld 方法重载_java 中的TLD文件
- 使用chkconfig管理开机自启动
- ios代码混淆-字符串加密的优点和其他破解方法
- 转售联通物联网卡的盈利可能性探讨
- 拷贝PDF中文字出现英文乱码的问题
- 易智瑞地理信息系统桌面软件10.7安装及单机版许可授权操作手册