使用Curl将标头返回为数组

我正在尝试使用PHP从CURL获取响应和响应标头,特别是对于Content-

Disposition:因此我可以返回标题中传递的文件名。在curl_getinfo中似乎没有得到返回。

我尝试使用HeaderFunction调用函数以读取其他标头,但是,我无法将内容添加到数组中。

请问有人有什么想法吗?


以下是我的代码的一部分,该代码是Curl包装器类:

 ...

curl_setopt($this->_ch, CURLOPT_URL, $this->_url);

curl_setopt($this->_ch, CURLOPT_HEADER, false);

curl_setopt($this->_ch, CURLOPT_POST, 1);

curl_setopt($this->_ch, CURLOPT_POSTFIELDS, $this->_postData);

curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($this->_ch, CURLOPT_USERAGENT, $this->_userAgent);

curl_setopt($this->_ch, CURLOPT_HEADERFUNCTION, 'readHeader');

$this->_response = curl_exec($this->_ch);

$info = curl_getinfo($this->_ch);

...

function readHeader($ch, $header)

{

array_push($this->_headers, $header);

}

回答:

在这里,应该这样做:

curl_setopt($this->_ch, CURLOPT_URL, $this->_url);

curl_setopt($this->_ch, CURLOPT_HEADER, 1);

curl_setopt($this->_ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($this->_ch);

$info = curl_getinfo($this->_ch);

$headers = get_headers_from_curl_response($response);

function get_headers_from_curl_response($response)

{

$headers = array();

$header_text = substr($response, 0, strpos($response, "\r\n\r\n"));

foreach (explode("\r\n", $header_text) as $i => $line)

if ($i === 0)

$headers['http_code'] = $line;

else

{

list ($key, $value) = explode(': ', $line);

$headers[$key] = $value;

}

return $headers;

}

以上是 使用Curl将标头返回为数组 的全部内容, 来源链接: utcz.com/qa/411423.html

回到顶部