Retrofit2 + OkHttp3下统一设置Http请求的Headers
来源:互联网 发布:淘宝模特拍摄 编辑:程序博客网 时间:2024/05/19 14:01
近几天尝试使用Retrofit和OkHttp构建网络层,从官网配置了依赖链接后,惊奇的发现OkHttp3,Retrofit2,都与以前的版本不兼容,不仅包名不一样(OkHttp3.*,以前的版本是com.squareup.okhttp.*)而且很多方法也被删掉了,目前只有Retrofit2在网上有少许资料,OkHttp3只能参考官方文档了。
在构建网络层时会遇到一个问题就是要手动配置Http请求的Headers,写入缓存Cookie,自定义的User-Agent等参数,但是对于有几十个接口的网络层,我才不想用注解配置Headers,目前网上很多文章的方法真对这两个版本都不是很适用,有的给出的方法已经被删除,有的方法会报出异常 :(
在翻阅官方API文档整理后的方法如下:
- import okhttp3.Interceptor;
- import okhttp3.OkHttpClient;
- import okhttp3.Request;
- import okhttp3.Response;
- import retrofit2.Retrofit;
- public class RetrofitAPIManager {
- public static final String SERVER_URL = "url";
- public static ClientAPI provideClientApi() {
- Retrofit retrofit = new Retrofit.Builder()
- .baseUrl(SERVER_URL)
- .client(genericClient())
- .build();
- return retrofit.create(ClientAPI.class);
- }
- public static OkHttpClient genericClient() {
- OkHttpClient httpClient = new OkHttpClient.Builder()
- .addInterceptor(new Interceptor() {
- @Override
- public Response intercept(Chain chain) throws IOException {
- Request request = chain.request()
- .newBuilder()
- .addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
- .addHeader("Accept-Encoding", "gzip, deflate")
- .addHeader("Connection", "keep-alive")
- .addHeader("Accept", "*/*")
- .addHeader("Cookie", "add cookies here")
- .build();
- return chain.proceed(request);
- }
- })
- .build();
- return httpClient;
- }
- }
/**官方 doc查找记录 **/
- OkHttp3下OkHttpClient的 List<Interceptor> interceptors()方法,返回的是一个不可编辑的列表,如果对其进行编辑会报出UnSupportedOperationException
- Interceptor的典型使用场景,就是对request和response的Headers进行编辑
0 0
- Retrofit2 + OkHttp3下统一设置Http请求的Headers
- Retrofit2 + OkHttp3下统一设置Http请求的Headers
- okhttp3+retrofit2进行HTTP请求以及设置请求超时示例
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android 给Retrofit2和OkHttp3添加统一的请求头Header
- android 中设置http请求头headers的Cookie
- 关于Retrofit2+Okhttp3实现统一添加请求参数和重定向
- Retrofit2.0+okhttp3设置缓存
- Retrofit2+OkHttp3如何高效率的切换线上线下环境
- Retrofit2 封装统一请求参数
- 妹子图爬虫,最重要的是请求头headers设置'Referer':'http://www.mzitu.com/'
- Retrofit2.0 + OkHttp3 遇到的坑
- rxjava2 + retrofit2 + okhttp3遇到的问题
- angular2实现统一的http请求头
- 将luci编译ipk包修改openwrt web界面
- javaScript
- iOS UIWebView键盘处理
- php 会话管理(SESSION管理)
- SlickEdit2013 linux 下的安装方法,以及g++的安装
- Retrofit2 + OkHttp3下统一设置Http请求的Headers
- Android UiAutomator环境配置与编译运行
- iOS-MD5算法
- ImageMagick简介
- Block的使用与实现原理
- JSON知识回顾
- github clone 代码到本地全步骤
- 【源码解读】Handler消息机制流程分析
- mysql索引最左匹配原则的理解