记一次curl无返回值的调试

1,042 阅读1分钟

问题:php curl 执行post发现无返回值

调试:直接输出后发现是乱码

curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 

解决:将获取的数据转码

$output = mb_convert_encoding($output, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5');

另附post函数

function post($url, $data = null) {
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
	if ($data) {
		curl_setopt($ch, CURLOPT_POST, TRUE);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
	}
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	$output = curl_exec($ch);
	$output = mb_convert_encoding($output, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5');
	curl_close($ch);
	return $output ?: '';
}

$url = 'http://xxx.com/ajax/GetJobInfoByBk.ashx';
$data = [
	'JobTypeId' => $code,
];
$res = $this->post($url, $data);
dump($res);