大多數情況下我們一般用WebView去加載一個界面就行了,但是有時候你想要進行post請求,比如你抓取到提交參數,想模擬一些pc端瀏覽器的請求,比如12306火車票.那要怎麼做呢?
抓取的參數如下:
代碼類似於下面:
StringBuilder builder1 = new StringBuilder();
try {//拼接post提交參數
builder1.append("interfaceName=").append(params.get("interfaceName")).append("&")
.append("interfaceVersion=").append(params.get("interfaceVersion")).append("&")
.append("tranData=").append(URLEncoder.encode(params.get("tranData"), "UTF-8")).append("&")
.append("merSignMsg=").append(URLEncoder.encode(params.get("merSignMsg"), "UTF-8")).append("&")
.append("appId=").append(params.get("appId")).append("&")
.append("transType=").append(params.get("transType"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String postData = builder1.toString();
webview.postUrl(url(請求地址), EncodingUtils.getBytes(postData, "UTF-8"));
有個小坑這裏提下,可能是和URL地址規範問題有關,URLEncoder會把空格變成加號但是有些後端是不支持的需要做處理,我這裏再次encode會把”+”變成%2B.因爲這裏沒有其他特殊字符,如果有再次encode可能是有問題.大家保險的話還是將”+”用其他方式變爲%2B.
大傢俱體情況具體分析,服務端的情況畢竟是未知的.
參考:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html
參考:http://fengchj.com/?p=1940