Okhttp框架的二次封裝,post json格式的參數

公司項目後臺請求,需要上傳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,如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章