记一次curl无返回值的调试
问题
php curl 执行post发现无返回值
调试
直接输出后发现是乱码
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
解决
- 核心代码
$output = mb_convert_encoding($output, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5');
- 完整代码
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);