如何设置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?
发布于 2012-03-22 22:04:19
我相信头必须是一个普通数组,它的元素是完整的key:value头,而不是关联数组:
$headers = array();
$headers[] = 'Accept: application/xml';
$headers[] = 'Content-Type: application/xml';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);这是在curl_setopt() documentation.中指定的
发布于 2012-03-22 22:16:38
你为你的请求设置了一个接受类型(并使用Michael的回答,你应该将他的回答算作回答直接问题,因为它确实如此),这并不要求服务器与该内容类型产生共鸣。
如果请求的另一端是静态文件,则必须确保web服务器使用MIME类型application/xml发送该文件。如果它以.xml结尾,那么Apache和IIS都已经这样做了。如果它是非标准的文件扩展名,但您希望将其作为应用程序/xml发送,则必须让服务器管理器设置httpd.conf或.htaccess,以便为该文件添加mime类型。在IIS中,您可以使用GUI管理工具执行相同的操作,为文件扩展名添加一个mime类型,如application/xml。
如果请求的另一端是服务器端脚本语言,如PHP、Perl、Python、ColdFusion、ASP、ASP.net等,那么您需要在被调用的脚本中使用该语言中的适当方法/函数来发出内容类型标头,并将其设置为应用程序/xml。
更新:您在注释中说您正在使用WizTools发出一个请求,该请求确实得到了应用程序/xml的返回。如果您想克隆该环境,请在curl请求中发送它发送的所有标头。一种猜测是,用户代理可能正在发挥作用。
https://stackoverflow.com/questions/9823810
复制相似问题