PHP如何使用curl 函数post json 以后,获取返回的响应头?

因为业务需要,需要使用curl 传输一段json数据,然后再获取响应首部中的响应行信息,(比如网站的Set-Cookie等),最后将Set-Cookie和对应的值组成数组返回,
使用如下代码:

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_HEADER => true, //输出header信息
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,//最大重定向次数 10次
    CURLOPT_TIMEOUT => 3000,//超时设置3000s
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => json_encode($data),
    CURLOPT_HTTPHEADER => array(
        "cache-control: no-cache",
        "content-type: application/json",
    ),
));
$result = curl_exec($curl);
$return_result = $result;
$info = curl_getinfo($curl);
$httpHeaderSize = $info['header_size'];  //header字符串体积
$pHeader = substr($result, 0, $httpHeaderSize); //获得header字符串
foreach(explode(PHP_EOL, $pHeader) as $item){//分隔得到的header字符串,拼接成响应行的数组
    if(strstr($item, 'Set-Cookie:')){
        $arr = explode('Set-Cookie:', $item);
        $arr2 = explode('=', $arr[1] ,2);
        $header_name = $arr2[0];#dump($header_name);
        $header_value = explode(';', $arr2[1], 2)[0];
        $set_header[] = [$header_name=>$header_value];
    }
}
return $set_header;

但是问题是,获取到header信息,就无法发送json,我认为原因就是在:CURLOPT_RETURNTRANSFER => true 的设置上.
请问各位大神,有什么好的方法,让curl()既发送json数据(post方式),又可以将响应行组成数组返回吗?
谢谢大家了.

一只名叫tom的猫
浏览 952回答 2
2回答

喵喵时光机

无法发送json,是什么意思?
打开App,查看更多内容
随时随地看视频慕课网APP