背景:访问远程接口,使用了http_build_query 来组织请求参数,并通过crul发送请求并获得结果。
问题:接口异常了,说丢失了参数,检查请求的url,一切正常~~
$urlparams = array();
$urlparams['id']=$this->id;
$urlparams['ctype']=$ctype;
$requestUrl = $urlHead.'?'.http_build_query($urlparams)
$resu = $this->_fetchUrl($requestUrl);
这样看上去不错,echo出来也正常,浏览器访问也ok,然后继续....
/**
* 发送请求
*/
private function _fetchUrl($url)
{
//初始化 curl
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_REFERER,"");
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
问题:接口异常了,说丢失了参数,检查请求的url,一切正常~~
排查:通过httpwatch,检查发送出去的请求,发现中间的 & 符号被转移成了& ok,问题解决