为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
一只名叫tom的猫 2019-03-15 05:43:25
因为业务需要,需要使用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方式),又可以将响应行组成数组返回吗?谢谢大家了.
查看完整描述

2 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

无法发送json,是什么意思?

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 951 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信