curl 返回http头信息处理;curl返回header头和body处理 - Go语言中文社区

curl 返回http头信息处理;curl返回header头和body处理


踩坑来源:做地址智能解析接口的时候,按照快递官方提供的demo需要给curl指定头信息,发送后返回的却不是单纯的json字符串,而是包含了header和body两部分,饶了好久才处理掉,做笔记以备忘

未处理前的数据返回:

出现头信息是因为这么两句:

curl_setopt($ch, CURLOPT_HEADER, TRUE);    //表示需要response header

处理方式:用curl自带的curl_getinfo()方法获取头的长度,然后使用substr来分割字符串,demo

public function curl_post($url,$method,$bodys){
        $headers = array();
        //根据API的要求,定义相对应的Content-Type
        array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8");
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curl, CURLOPT_FAILONERROR, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, true);
        if (1 == strpos("$".$host, "https://")){
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        }
        curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys);
        $result = curl_exec($curl);
        //对返回的结果进行字符串处理
        if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200') {
            $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
            $header = substr($result, 0, $headerSize);
            $body = substr($result, $headerSize);
        }
        return $body;
    }

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_27987023/article/details/88987835
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-18 18:27:00
  • 阅读 ( 1098 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢