当前位置: 首页 > 面试题库 >

使用Curl将标头返回为数组

赵英资
2023-03-14
问题内容

我正在尝试使用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;
}


 类似资料:
  • 我正在尝试使用PHP从CallRail获取数据。通过JSON的com API。 但是,当直接在浏览器中预览PHP文件时,我遇到了这个错误: 我的代码: 到目前为止,我已经: 阅读几篇与错误相关的文章,但没有找到解决方案或可验证的准确解释。 我已经手动重新输入了所有代码,以确保我没有任何编码不当的字符或无效的空格。 我也试图找到PHP文档中的官方留档,但没有找到任何有用的东西。 我在一个空白的PHP

  • 问题内容: 我想知道是否/如何在PHP中将自定义标头添加到cURL HTTP请求。我正在尝试模拟iTunes如何捕获图片并使用以下非标准标头: 如何将这些标头添加到请求中? 问题答案: http://www.php.net/manual/zh/function.curl- setopt.php

  • 您只能使用HTTP HEAD请求报头,如中的选项。 冗长的HTML响应体在命令行中很难得到,所以我希望只得到标题作为POST请求的反馈。但是,头和岗是两种不同的方法。 如何使curl只显示POST请求的响应头?

  • 我很难强制S3在它从一个bucket返回的所有对象上设置CORS头,尽管启用了CORS,但由于客户端S3上传正在工作,返回的对象没有CORS头! 我启用的策略是: 对象URL示例https://s3.amazonaws.com/captionable/meme/test 有人知道怎么了吗?

  • 我有以下练习: 编写一个名为createListOfObjects的函数,该函数接受 包含名字和姓氏以及返回值的字符串数组 一个对象数组,每个对象都具有属性 和以及名字和姓氏值 对应值* var namesList=['Cameron Betts','Shana Lopez','Angela li']* createListOfObjects(名称列表) = 到目前为止,我的解决方案是: 但它返回

  • CustomObjectResource-rest服务返回一个简单的POJO,其中包含文本、长日期和本地日期时间字段。 这是我的邮差。第-1部分接受=json状态码为200,JSON解析失败。实际上,返回的对象是XML。当我选择以XML显示结果时, 现在,我使用Accept:application/xml 第2部分接受xml 它没有返回任何内容:404。 我和杰克逊一起使用SpringBoot。