关于OKHTTP添加公共参数或请求加签名

关于OKHTTP添加公共参数或请求加签名,第1张

关于OKHTTP拦截器Interceptor很强大,很好用。因为公司有个需求需要对所有请求接口添加共有参数并且对共有参数进行签名。在OKHTTP中GET的请求参数和POST表单形式的参数很容易获取,但是对于BODY类型的一时没想到解决办法,后来想了想发现其实都是可以做的。

GET方法直接url.request().query()即可获得key=value&key=value形式的参数,可以直接拼凑参数,然后签名。

POST方法:有三种情况,表单,body,multipart三种情况,对于multipart主要是文件,一般过滤掉。

重要源码:

if (requestBody instanceof FormBody) {for (int i =0i <((FormBody) requestBody).size()i++) {rootMap.put(((FormBody) requestBody).encodedName(i), ((FormBody) requestBody).encodedValue(i))}} else {//buffer流Buffer buffer = new Buffer()requestBody.writeTo(buffer)String oldParamsJson = buffer.readUtf8()rootMap = mGson.fromJson(oldParamsJson, HashMap.class) //原始参数rootMap.put("publicParams", commomParamsMap) //重新组装String newJsonParams = mGson.toJson(rootMap) //装换成json字符串request = request.newBuilder().post(RequestBody.create(JSON, newJsonParams)).build()}

具体靠参考:http://blog.csdn.net/wuyinlei/article/details/57087872

1、首先打开myeclipse新建web项目,如下图所示。

2、display-name用来定义web项目名称,如下图所示。

3、context-param设定web项目参数,param-name指定参数名称,param-value设定参数值。

4、filter用来指定过滤器,filter-name指定过滤器名称,filter-class指定过滤器类名, init-param定义参数。

5、listener设置监听器listener-class用来设置监听器类。

6、servlet声明servlet参数,servlet-name指定servlet名称。

这就要看WebService参数都是那些类型了,就和你写的方法一样,例如 Add(int num1,int num2) 那么你使用这个方法的时候就要传递俩个整型参数 num1,num2 就行


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11927914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存