从 curl_exec 获取响应代码、标头和内容

Posted

技术标签:

【中文标题】从 curl_exec 获取响应代码、标头和内容【英文标题】:Get response code, headers and contents from curl_exec 【发布时间】:2020-02-24 16:44:23 【问题描述】:

我似乎无法从 curl_exec 中获取响应代码、标头和内容。

这是我的最后一次尝试:

$url = '...';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_CAINFO, 'PATH_TO_.cer');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($curl, CURLOPT_HEADER, true); //ATTEMPT1
/*curl_setopt($curl, CURLOPT_HEADERFUNCTION, function($curl, $header) use (&$headers) //ATTEMPT2
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
        return $len;
    
    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    print_r($headers);
    return $len;
);*/
$contents = curl_exec($curl);
curl_close($curl);

我试过 ATTEMPT1 和 ATTEMPT2

在我的请求头中,有很多字段,例如速率限制,我每次都需要检索,但我还需要响应代码和请求的内容。

编辑:到目前为止,我发现我需要使用 ATTEMPT1 而不是 ATTEMPT2,因为最后一个只是手工制作的版本,我似乎无法理解这是摆脱了响应代码在标题中。

【问题讨论】:

【参考方案1】:

您正在寻找curl_getinfo()

例如获取响应码:

$http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

【讨论】:

以上是关于从 curl_exec 获取响应代码、标头和内容的主要内容,如果未能解决你的问题,请参考以下文章

未从响应标头中的后端获取 JWT 令牌

从 <img> 标签获取 HTTP 状态代码或响应标头?

http服务器响应(套接字)的标头和内容之间的差异

如何在 Angular 中从服务器获取带有 jwt 令牌的响应标头

如何从响应标头中的内容类型中删除 charset=utf-8

如何从 fetch 中获取响应的标头