每天学习一点点,成功增加一大步

获取CURL中返回的body内容

PHP zhanghui 400℃

在 PHP 使用 CURL 来做与远程 API 的数据交互,在某些情况下,curl_exec (或 curl_multi_getcontent)返回中会出现 header 和 body 的混合体,最近在做 PHP 与 NodeJs 写的 webApi 时就遇到这种情况,

解决的方法就只能想办法将 headler 部分给去除,庆幸的是curl_exec (或 curl_multi_getcontent)返回的是 string 类型,不用多做转换处理。

$curl = curl_init();
……
$output = curl_exec($curl);
……
if (curl_getinfo($curl, CURLINFO_HTTP_CODE) !== 200) {
    $msg = 'CURL HTTP State Code: ' . curl_getinfo($curl, CURLINFO_HTTP_CODE)
        . ', Msg:' . curl_error($curl);
    throw new \Exception($msg);
}
// 获得响应结果里的:头大小
$headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$headerTotal = strlen($output);
$bodySize = $headerTotal - $headerSize;

// 根据头大小去获取头信息内容
$header = substr($output, 0, $headerSize);
$comma_separated = explode("\r\n", $header);
$arr = array();

foreach ($comma_separated as $value) {
    if (strpos($value, ':') !== false) {
        $a = explode(":", $value);
        $key = $a[0];
        $v = $a[1];
        $arr[$key] = $v;
    } else {
        array_push($arr, $value);
    }
}
$body = substr($output, $headerSize, $bodySize);
curl_close($curl);

转载请注明:隨習筆記 » 获取CURL中返回的body内容

喜欢 (0)