解決post請求接收資料型別為text/html時引數傳遞的問題
阿新 • • 發佈:2018-12-26
當我們需要post資料的時候,如果接收方接收的格式是application/json,我們可以按如下所示操作,將資料放入json體中。
如果對方接收格式是text/html要怎麼將引數傳遞過去呢?
之前採取的方式是在將引數寫在params中,如下圖所示
發現對方還是取不到我post給他的引數。
正確操作如下
- 通過postman方式
將資料放入下圖中的key,value位置。
- 通過程式碼post
將引數params(jsonObject格式) ,轉成kv 結構 , 拼接到x-www-form-urlencoded中的key value下
程式碼參考:
DefaultHttpClient httpClient = new DefaultHttpClient();
String queryString=MapUtils.map2QueryString(params).substring(1);//分割成一對對kv
HttpPost method = new HttpPost(url);
StringEntity entity = new StringEntity(queryString,"utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/x-www-form-urlencoded" );//這邊注意不是設定成x-www-form-urlencoded
method.setEntity(entity);//
try {
HttpResponse result = httpClient.execute(method);
JSONObject jsonResult = null;
String str = "";
Header[] headers = result.getAllHeaders();
for (Header header : headers)
{
System.out.println(header.toString());
}
/** 讀取伺服器返回過來的json字串資料 **/
str = EntityUtils.toString(result.getEntity());
/** 把json字串轉換成json物件 **/
jsonResult = JSONObject.fromObject(str);
System.out.println(jsonResult);
} catch (Exception e) {
System.out.println("post請求提交失敗:" + url);
}