Retrofit2.0的使用之添加请求头
来源:互联网 发布:魔侠传 网络异常 编辑:程序博客网 时间:2024/06/11 02:51
在我们的项目开发中很多情况下我们都需要添加自定义的头信息,如token、APP-OS等参数。
一、使用Retrofit2添加请求头
1、使用@Header注解添加请求头
@GET("v2/movie/top250")Observable<MovieDataBean> getTopMovie(@Header("OS") String os,@Query("start") int start);
就像上面这样,只要在调用的时候传入参数即可,简单方便易操作。
2、使用@HeaderMap注解添加多个请求头
@GET("v2/movie/top250")Observable<MovieDataBean> getTopMovie(@HeaderMap Map<String,String> headerParams, @Query("start") int start);
二、使用OkHttpClient设置拦截器添加请求头
1、添加拦截器
使用OkHttpClient通过拦截器可以统一设置请求头,不用每个接口都写一遍。
if (App.DEBUG) { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); //BODY HEADERS BASIC NONE interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); client.addInterceptor(interceptor); }
2、自定义拦截器添加请求头
public class MyInterceptor implements Interceptor { private Context mContext; public MyInterceptor(Context context) { this.mContext = context; } @Override public Response intercept(Chain chain) throws IOException { Request originalRequest = chain.request(); String method = originalRequest.method(); if (method.equalsIgnoreCase("get")) { //GET请求的参数封装 } else if (method.equalsIgnoreCase("post")) { //POST请求的参数封装 //获取请求Body RequestBody requestBody = originalRequest.body(); Map<String, String> originalParams = new LinkedHashMap<>(); //requestBody是FormBody对象 即Post请求 if (requestBody instanceof FormBody) { for (int i = 0; i < ((FormBody) requestBody).size(); i++) { //将请求参数加入到集合中 统一交给请求头类处理 originalParams.put(((FormBody) requestBody).name(i), ((FormBody) requestBody).value(i)); } } else { Buffer buffer = new Buffer(); requestBody.writeTo(buffer); String oldParamsJson = buffer.readUtf8(); Gson gson = new Gson(); originalParams = gson.fromJson(oldParamsJson, HashMap.class); //原始参数 } //处理请求头参数的类 RequestParamsWrapper requestParamsWrapper = new RequestParamsWrapper(originalParams); originalRequest = originalRequest.newBuilder()//添加请求头 .headers(requestParamsWrapper.getRequestHeaders(originalRequest.headers())) .build(); } return chain.proceed(originalRequest); }}
阅读全文
1 0
- Retrofit2.0的使用之添加请求头
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Retrofit2.0请求添加头信息,以及解析成DAO
- Android 给Retrofit2和OkHttp3添加统一的请求头Header
- android RxJava+Retrofit2.0 OkHttp添加日志拦截器和设置请求头
- Android Retrofit2 动态(静态)添加请求头Header
- WKWebView的简单使用(添加请求头)
- retrofit2.0中使用okHTTP post get put 过滤请求内容或添加内容
- Retrofit2.0的使用
- Retrofit2.0 的使用
- Retrofit2.0的使用
- Retrofit2.0的使用
- Retrofit2.0学习之GET请求
- Retrofit2.0学习之Post请求
- 常考经典算法---动态规划(拼凑面额、背包问题)
- IT培训对Java学习的三条建议
- 字节对齐规则
- <<征服C指针>>学习笔记
- 云唯+CEO李宏洋谈:IT培训学费辣么贵还值得去吗?
- Retrofit2.0的使用之添加请求头
- XlistView
- DFS序的学习
- CSS3笔记——过渡 Transition
- 给定一个字符串s,请计算输出含有连续两个s作为子串的最短字符串。
- 完全背包
- Unity鼠标出屏幕后 摄像机跟随鼠标方向移动
- Luba And The Ticket CodeForces
- OKHTTP的简单封装