【问题标题】:Set HTTP Request "Content-Type"设置 HTTP 请求“内容类型”
【发布时间】:2012-04-07 02:30:39
【问题描述】:

如何设置 HTTP 请求的内容类型?

我试过这个:

$headers['Accept'] = 'application/xml';
$headers['Content-Type'] = 'application/xml';

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

结果如下:

HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/html;charset=UTF-8
Date: Thu, 22 Mar 2012 14:04:36 GMT

但到目前为止还没有运气......
我必须做什么才能在我的 HTTP 响应中获得 Content-Type: application/xml

【问题讨论】:

  • 是的,我知道,但是我需要在请求中设置什么才能获得Content-Type: application/xml 响应?
  • 你给出的结果是一个 HTTP 响应而不是一个请求。你是问如何设置请求的content-type,还是问如何让服务器在响应中提供XML?
  • 您需要设置 Accept 标头(而不是 content-type 标头)。那么服务器需要支持多种响应类型,并使用accept header来决定使用哪一种。你知道服务器是否这样做吗?
  • 我在问我必须在我的 request 中设置什么才能在我的 respons 中有 Content-Type: application/xml
  • @Quentin,我确实设置了 Accept 标头,不是吗?

标签: php curl http-headers


【解决方案1】:

我相信标题必须是一个普通数组,其元素是完整的键:值标题,而不是关联数组:

$headers = array();
$headers[] = 'Accept: application/xml';
$headers[] = 'Content-Type: application/xml';

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

这是在curl_setopt() documentation.中指定的

【讨论】:

  • 感谢您的尝试,但结果仍然相同。还是我必须清除一些东西?饼干,缓存,...
  • 这是返回的 HTTP 响应吗?您正在请求中发送内容类型标头。这并不意味着响应服务器会发回相同的内容类型。
  • 我在 WizTools 中尝试了相同的请求,服务器返回了application/xml Content-Type,因此服务器能够发送正确的响应。只有当我尝试使用自定义 PHP 时,我才能发送 Content-Type 设置...
【解决方案2】:

您为您的请求设置了一个接受类型(并为此使用Michael 的回答,您应该将他的回答视为回答直接问题,因为确实如此)。这并不要求服务器响应该内容类型。

如果请求的另一端是静态文件,您必须确保您的 Web 服务器发送 MIME 类型为 application/xml 的文件。如果它以 .xml 结尾,那么 Apache 和 IIS 都已经这样做了。如果它是其他非标准文件扩展名,但您希望它作为 application/xml 发送,那么您必须让服务器管理器设置 httpd.conf 或 .htaccess 以添加 mime 类型文件。在 IIS 中,您使用 GUI 管理工具来做同样的事情,为文件扩展名添加一个 mime 类型为 application/xml。

如果请求的另一端是服务器端脚本语言,例如 PHP、Perl、Python、ColdFusion、ASP、ASP.net 等,那么您需要在该语言中为脚本使用适当的方法/函数被调用以发出内容类型标头并将其设置为 application/xml。

更新:您在 cmets 中说您正在使用 WizTools 发出一个请求,该请求确实返回了 application/xml。如果您想克隆该环境,请发送它在您的 curl 请求中发送的所有标头。一种猜测是用户代理可能正在发挥作用。

【讨论】:

  • 感谢您的宝贵回答。所以,请求是正常的,是服务器没有工作,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多