okHttp請求公共參數(shù)

othttp添加請求公共參數(shù)的幾種方法

第一種 添加在請求鏈接尾部
HttpUrl url = original.url().newBuilder() //請求尾部鏈接
                    .addQueryParameter(VERSION, "")
                    .addQueryParameter(APP_VERSION, "")
                    .addQueryParameter(DEVICE, "")
                    .addQueryParameter(DEVICE_NAME, "android")
                    .addQueryParameter(DEVICE_IMEI, "")
                    .addQueryParameter(OS_VERSION, "")
                    .addQueryParameter(TOKEN, "")
                    .addQueryParameter(DEVICE_ID, "")
                    .build();

Request request = original.newBuilder()
                .method(original.method(), original.body())
                 //添加到請求里
                .url(url)
                .build();
第二種 添加在請求form表單里

最麻煩的一種,一般情況下不會用這種方法

RequestBody formBody = new FormBody.Builder()//form表單
                .add(DEVICE_ID, "")
                .add(CHANNEL, "")
                .add(DEVICE_SERIAL_ID, "")
                .add(MOBILE_OS, "android")
                .add(VERSION, "")
                .add(MEMBER_ID, "")
                .add(MEMBER_TYPE, "")
                .add(TOKEN, "")
                .build();

//默認添加formBody后不能添加新的form表單,需要先將RequestBody轉(zhuǎn)成string去拼接
String postBodyString = bodyToString(original.body());
postBodyString += ((postBodyString.length() > 0) ? "&" : "") + bodyToString(formBody);

Request request = original.newBuilder()
                .method(original.method(), original.body())
                 //添加到請求里
                 //string轉(zhuǎn)回成RequestBody
                .post(RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"),
                        postBodyString))
                .build();

RequestBody轉(zhuǎn)String的方法

private static String bodyToString(final RequestBody request){
        try {
            final RequestBody copy = request;
            final Buffer buffer = new Buffer();
            if(copy != null)
                copy.writeTo(buffer);
            else
                return "";
            return buffer.readUtf8();
        }
        catch (final IOException e) {
            return "did not work";
        }
    }
第三種 添加在請求head
Request request = original.newBuilder()
                .method(original.method(), original.body())
                .addHeader(DEVICE_ID, "")
                .addHeader(CHANNEL, "")
                .addHeader(DEVICE_SERIAL_ID, "")
                .addHeader(MOBILE_OS, "android")
                .addHeader(VERSION, "")
                .addHeader(MEMBER_ID, "")
                .addHeader(TOKEN, "")
                .addHeader(MEMBER_TYPE, "")
                .build();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容