Volley直接設定POST包體

2021-07-11 15:30:18 字數 1718 閱讀 4436

由於現在幫別人做二次開發,就遇到有後台人員全部是天坑,都是拼音過了8級的人才。而且網路請求方式也是挺奇葩,並不是鍵值對的方式進行請求,而是乙個json字串放在post包體中進行請求。

之前一直封裝好的volley幫助類放在這裡來直接沒法用了,然後就需要新增乙個直接設定post包體的請求方法。然而發現網上全部都是說的重寫getparams方法來給volley設定請求引數。那沒法,我就只有硬著頭皮來做我最不想做的事情了————看源**。

因為所有人都說重寫getparams方法,那麼我們就先去看看這個getparams方法到底具體的做了些什麼操作。

我用的是stringrequest這個類,然後點進去,看到是繼承了request這個類,**如下:

}}顯然這裡面沒有我們要找的getparams方法,那麼繼續往下面走,點進request這個類。這個類裡面**很多了,搜尋getparams,然後會找到在getbody方法裡面對它進行了呼叫:

public

byte getbody() throws authfailureerror

return

null;

}

從這裡的返回值裡面看到另外的乙個方法,encodeparameters,點過去:

private

byte encodeparameters(mapparams, string paramsencoding)

return encodedparams.tostring().getbytes(paramsencoding);

} catch (unsupportedencodingexception uee)

}

看到其實是在這裡對map進行遍歷,拼接成了字串,之後再轉換成的byte返回給getbody,最終成為了post的請求包體。

現在需要再回到發起請求的地方,現在不再重寫getparams這個方法了,我們需要重寫的是getbody的方法:

@override

public

byte getbody() catch (unsupportedencodingexception e)

}

這裡的body就是包體的字串了,然後呼叫volley中本身封裝好的getparamsencoding即可。

這裡實際上最後的操作非常簡單,就是重寫了另外乙個方法,但是中間的過程則是需要在之後遇到問題的時候再次用得到的,謝謝各位看官,麼麼噠。

Volley的使用 二 post請求

volley post請求 1 使用stringrequest,返回值是string 2 使用jsonobjectrequest,返回值是json 3 使用普通方式post請求,複雜繁瑣,不建議。1 使用stringrequest 使用結構 new stringrequest 訪問方式,訪問位址,訪...

volley框架的使用post帶引數遇到的問題

關於volley用法的詳細介紹參考 stringrequest stringrequest newstringrequest method.post,url,listener,errorlistener 本來post方式帶引數只要重寫getparams方法,然後構造乙個map,將鍵值對設定進去就好了...

Gradle編譯Volley的Jar包及問題解決

開啟git,然後輸入 git clone 出現這個介面的話說明是因為網路的原因,這個時候需要自己翻牆。然後開啟命令列,進入到原始碼所在檔案 使用構建命令 gradle build 本以為會順便編譯通過,但是卻build failed with an exception 然後根據提示發現是因為沒有找到...