Retrofit初探——请求参数
来源:互联网 发布:湖南云箭集团知乎 编辑:程序博客网 时间:2024/06/04 00:40
0x00 请求参数
常见的Http请求,除了指定的请求地址,很多时候我们还需要加上一些请求参数,这些参数可能是固定的,也可能是动态添加的。在Retrofit中,我们该如何处理呢?这里以GET方式中添加请求参数为例。
0x01 固定请求参数
这里说的固定请求参数是指每次请求我们都在Url中添加相同的请求的参数。这种场景多出现在需要认证的情况,比如添加 Token 字段等。
在之前的文章中,我们有提到在构建OkHttpClient对象的时候使用过 Interceptor
,在 Interceptor
的逻辑中,我们会重新创建一个 Request
对象,在这个对象中我们可以传入一个 HttpUrl
,在这个对象中,我们可以传入一些需要的请求参数。通过之前对 Interceptor
了解,我们应该知道,这里做的操作是对所有的请求都有效的。这样就可以完成我们为每个请求添加固定请求参数的目的。代码如下:
OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public okhttp3.Response intercept(Chain chain) throws IOException { Request original = chain.request(); HttpUrl originalHttpUrl = original.url(); HttpUrl url = originalHttpUrl .newBuilder() .addQueryParameter("token", "I_am_user_token") .addQueryParameter("user_key", "I_am_user_user_key") .build(); Request request = original .newBuilder() .url(url) .build(); okhttp3.Response response = chain.proceed(request); return response; } }) .build();
0x02 动态请求参数
这个指我们在不同的请求中添加不同过的请求参数。比如,在请求用户信息的接口中我们可能需要传入用户ID,在请求记录的接口中我们需要传入起止时间等。由于这样的参数是针对接口的,因此我们就需要在每一个接口做中处理。
@Query 添加一个请求参数
// http://119.29.29.29/d?dn=ttdevs.vicp.com@GET("/d")public Call<ResponseBody> singleParams(@Query("dn") String domain);
通过上面的方式,我们发出的请求就是:
http://119.29.29.29/d?dn={domain}
@QueryMap 添加一组请求参数
@GET("/record")public Call<ResponseBody> multiParams(@QueryMap(encoded = true) Map<String, String> options);
上面我们发出的请求是:
http://ttdevs.vicp.net/record?p1=v1&p2=v2
这个这个例子中还可以看到,我们使用了一个参数:
encoded = true
,这个参数的意思是,对我们的参数进行URL
Encode。
0x03 总结
通过上面的介绍,我们可以了解,如果添加我们的请求参数。当需要给每一个请求都添加相同参数时该如何封装,把Retrofit打造成更适合我们使用的工具。
—— EOF ——
- Retrofit初探——请求参数
- Retrofit初探——同步与异步请求
- Retrofit 请求参数类型
- Retrofit初探——Header问题补充
- Retrofit 2.0 GET 请求参数出现错误
- Retrofit请求参数注解字段说明
- RetroFit请求参数和返回格式说明
- retrofit网络请求参数为json
- Retrofit 网络请求参数解读(一)
- Retrofit请求参数注解字段说明
- Retrofit请求参数注解字段说明
- android retrofit 获取post请求参数值
- 安卓Retrofit post请求 带参数
- Retrofit初探——POST方式提交JSON数据
- 王学岗Retrofit初探(二)——文件的上传
- 王学岗Retrofit初探(三)——json的数据
- 王学岗Retrofit初探(四)——与Rxjava的使用
- Retrofit初探
- 90. Subsets II
- 如何用PS将gif图背景变透明
- NavigableSet接口源码解析
- HDU 1856 More is better 并查集
- hdu 1698Just a Hook(线段树区间修改)
- Retrofit初探——请求参数
- CentOS 6.3 下用ntfs-3g挂载Windows NTFS分区
- HDU 2120 Ice_cream's world I 并查集
- android开发 华为 点击跳转到权限管理页面
- STM32学习-PWM实验
- 分布式存储
- 【VS开发】ActiveX控件如何定制属性?
- Scala 异常处理
- 4.7 编写一个递归函数,将所输入的 10 个字符按相反顺序排列出来。