繁体   English   中英

设置HTTP请求“内容类型”

[英]Set HTTP Request “Content-Type”

如何设置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

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

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

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

这在curl_setopt()文档中指定

你为你的请求设置了一个接受类型(并使用迈克尔的答案,你应该把他的答案都算作回答直接问题,因为它确实如此)。 这并不要求服务器重新使用该内容类型。

如果请求的另一端是静态文件,则必须确保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。

更新:你在评论中说你正在使用WizTools发出一个返回application / xml的请求。 如果要克隆该环境,请在curl请求中发送它发送的所有标头。 一个猜测是用户代理可能在游戏中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM