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 okhttp的对象可以通过Builder模式进行传参。2 Builder模式可以传入请求的URL、请求类型、请求体、请求头等参数,同时也可以对超时时间、重定向、缓存策略等进行配置。
3 如果需要上传文件或者流,可以通过RequestBody类进行封装,在Builder中传入RequestBody对象即可。
延伸:在实际开发中,通过Builder模式进行配置和传参可以提高灵活性和可维护性,将参数进行封装,可以避免参数传递不当导致的问题,同时也可方便进行单元测试。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)