使用Google瀏覽器開發者工具學習HTTP請求記錄
阿新 • • 發佈:2019-02-17
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
}