php http_build_query 导致的接口访问异常

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

$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,问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值