由於現在幫別人做二次開發,就遇到有後台人員全部是天坑,都是拼音過了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 然後根據提示發現是因為沒有找到...