<Retrofit2> 添加header和baseparam
来源:互联网 发布:英语口语速成软件下载 编辑:程序博客网 时间:2024/06/09 13:55
一.添加header
1.请求拦截器:
方式一: OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(new Interceptor() { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request original = chain.request(); Request request = original.newBuilder() .header("User-Agent", "Your-App-Name") .header("Accept", "application/vnd.yourapi.v1.full+json") .method(original.method(), original.body()) .build(); return chain.proceed(request); } } 方式二: OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(new Interceptor() { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request original = chain.request(); Request request = original.newBuilder() .addHeader("Cache-Control", "no-cache") .addHeader("Cache-Control", "no-cache") .method(original.method(), original.body()) .build(); return chain.proceed(request); } } OkHttpClient client = httpClient.build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .client(client) .build(); OkHtt请求头通过拦截器添加Header,两种方式的不同 .header(key, val):如果key相同,最后一个val会将前面的val值覆盖 .addHeader(key, val):如果key相同,最后一个val不会将前面的val值覆盖,而是新添加一个Header
2.动态添加
@GET("get.php") Call<StoryResponse> getPhp(@Header("headerType") String type);
@GET("get.php") Call<StoryResponse> getPhp(@HeaderMap Map<String,String> type);
3.静态添加
@Headers("headertype:2") @GET("get.php") Call<StoryResponse> getPhp();
@Headers({"headertype:2","type:3"}) @GET("get.php") Call<StoryResponse> getPhp();
二 .添加baseParam
为所有的网络请求添加公用的param,如uid,imei等,仍然使用到了拦截器:
//base节点拦截器 Interceptor baseParamInterceptor = new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); HttpUrl originalUrl = original.url(); HttpUrl url = originalUrl.newBuilder() .addQueryParameter("apikey","1234") .addQueryParameter("imei","1456").build(); Request.Builder requestBuilder = original.newBuilder().url(url); Request request = requestBuilder.build(); return chain.proceed(request); } };然后添加拦截器就可以了:
//定制OkHttp OkHttpClient.Builder httpClientBuilder = new OkHttpClient .Builder(); //OkHttp进行添加拦截器loggingInterceptor httpClientBuilder..addInterceptor(headerInterceptor); return httpClientBuilder.build();
0 0
- <Retrofit2> 添加header和baseparam
- Retrofit2.0添加Header的方法总结
- Android 给Retrofit2和OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2 动态(静态)添加请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- ReccylerView添加header和footer
- RecyclerView添加Header和Footer
- RecycleView添加header和footer
- RecyclerView添加Header和Footer
- RecyclerView添加Header和Footer
- RecyclerView添加header和footer
- RecyclerView添加header和footer
- RecyclerView 添加 Header 和 Footer
- RecyclerView添加Header和Footer
- 服务器端编程心得(二)—— Reactor模式
- CXF系列之WSDL文件结构
- MySQL的外键约束:Cascade/Restrict/No action/SET NULL :级联操作
- 时间戳
- java反射机制学习笔记
- <Retrofit2> 添加header和baseparam
- 基于Solr的HBase多条件查询测试
- 常用centos命令
- linux网卡配置文件详解
- postman 发送带cookie的请求
- Tensorflow深度学习入门——下载和读取MNIST数据
- 斐波那契数列
- Windows(64bit)下Python2.7环境安装paramiko模块
- 欢迎使用CSDN-markdown编辑器