背景:访问远程接口,使用了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,问题解决
本文讨论了在访问远程接口时,使用http_build_query组织请求参数并发送请求时出现的问题。通过使用httpwatch检查,发现参数编码异常,导致接口请求失败。问题在于字符实体的不正确转换,最终通过修改编码方式解决了问题。
463

被折叠的 条评论
为什么被折叠?



