Okhttp框架的二次封装,post json格式的参数

来源:互联网 发布:花刺ip代理软件 编辑:程序博客网 时间:2024/06/07 01:10

公司项目后台请求,需要上传json格式的参数,本打算直接使用鸿洋(博客)大大封装的okhttp-utils,但是发现大大虽然封装了表单的post,但是没有json的(可能我眼瞎没看见),所以还是需要根据公司具体的参数结构,进行二次封装。
比如参数如下:

{    args: {        pub_param:{            "username":"old wang",            "pwd":"4cf7f8flf9fajl0fa1"        }        pri_param:{            "appversion":"2.0.0",            "token":"xxxxxxxx",            "userid":12345,            "imei":"xxxxxxxxxxxxxxxxxxxx",        }    }}

这种情况下,参数分为了公参和私参,私参针对每个接口都不一样,但是公参却相对固定。这样就可以封装好公参,暴露私参,每次只需要传私参就可以。当然传参的格式一般都是Map键值对,也就是说,我们也要做Map与Json之间的转化。

关于okhttp-utils的基础用法可以参见博客和github,我这边就不班门弄斧。直接讲如何二次封装了。

首先里面有个PostStringBuilder.java

public class PostStringBuilder extends OkHttpRequestBuilder<PostStringBuilder>{    private String content;    private MediaType mediaType;    public PostStringBuilder content(String content)    {        this.content = content;        return this;    }    public PostStringBuilder mediaType(MediaType mediaType)    {        this.mediaType = mediaType;        return this;    }    @Override    public RequestCall build()    {        return new PostStringRequest(url, tag, params, headers, content, mediaType,id).build();    }}

顾名思义,就是post string类型的参数,我们可以借用这个,做一个中间层,将Map格式的参数,拼接成json,然后再将json转string,对于框架的使用者,提供Map格式的参数,对于服务器,传输json格式的参数。
由于PostStringBuilder继承自OkHttpRequestBuilder,所以要先改OkHttpRequestBuilder,如下:

0 0
原创粉丝点击