GET請求
1.Google瀏覽器開發者工具截圖圖示
2.General
- Request URL :為請求鏈接
- Status Code :為HTTP響應狀態碼
3.ResponseHeaders :響應頭
4.Request Headers :請求頭
- 留意請求頭內無Content-Type
5.Query String Parameters :GET 請求參數
POST請求(正常表單提交)
1.其他同上
2.Request Headers :請求頭
- 注意Content-Type:application/x-www-form-urlencoded,與其他POST方式做對比
3.Form Data :post傳遞的值
- 格式與GET請求一致
POST請求(AJAX未指定請求頭RequestHeader)
1.其他同上
2.Request Headers :請求頭
- 注意Content-Type:text/plain;charset=UTF-8
- 有些未帶charset=UTF-8
3.Request Payload :post傳遞的值,Form Data不見了
- 另外格式也與GET請求一致
POST請求(JSON傳遞參數)
1.其他同上
2.Request Payload :傳遞的值
- 注意字符串格式為json,與上面3種方式都不同
結論
前面3種都與常規方式一樣,主要是第4種方式
1. 模擬POST請求傳遞JSON參數(PHP)
<?php $url = "http://www.111.com"; $post['vin'] = "12312435"; //$post參數需要json_encode $json = _curl_post($url, json_encode($post)); //$json為返回值,示例為返回JSON字符串 $data = json_decode($json, true); //告訴瀏覽器輸出為json字符串 header("Content-Type:application/json; charset=UTF-8"); echo $data['d']['Data']; function _curl_post($url, $post) { if ($url) { //告訴服務端提交的為JSON參數 $header[] = "Content-Type:application/json; charset=UTF-8"; $options = array( CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $header, CURLOPT_POST => 1, CURLOPT_ENCODING => 'gzip,deflate', CURLOPT_POSTFIELDS => $post ); $ch = curl_init($url); curl_setopt_array($ch, $options); $result = curl_exec($ch); curl_close($ch); return $result; } } ?>
2.后端獲取請求參數
前面Ajax發送代碼(使用jQuery):
$.ajax({
url: '', type: 'POST', contentType: 'application/json; charset=utf-8', // 很重要 traditional: true, data: JSON.stringify({your json object}), // {"name":"zhangsan", "age": 28} success: function(res, status, xhr) { // your code .... } });
服務端接收代碼(java):
HttpServletRequest req = ... try { BufferedReader reader = req.getReader(); StringBuilder sb = new StringBuilder(); char[] buff = new char[1024]; int len = -1; while((len = reader.read(buff)) != -1) { sb.append(buff, 0, len); } reader.close(); // example System.out.println( sb.toString() ); // {"name":"zhangsan", "age": 28} } catch(IOException e) { // error }