WebView進行post請求

大多數情況下我們一般用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

發佈了64 篇原創文章 · 獲贊 120 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章