一、需求
今天对接某IDC运营商API的时候,发现一直没有对接成功。然后使用API文档中的PHP示例进行调试,请求响应是成功的。
通过wireshark进行抓包对比,发现请求参数是放在body中的,而不是使用QueryString的方式。如下图:
二、API文档中使用PHP Curl发送带Body GET请求的实现
function request($url, $data = array(), $method = 'GET')
{
$str = http_build_query($data);
//请求头
//$header = array();
$ch = curl_init(); //初始化CURL句柄
curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设为TRUE把curl_exec()结果转化为字串,而不是直接输出
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); //设置请求方式
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//设置HTTP头信息
curl_setopt($ch, CURLOPT_POSTFIELDS, $str);//设置提交