我正在解决POST到远程站点的一些问题,特别是远程主机永远不会返回任何数据(空字符串).
在我尝试排除其他任何问题之前,我想确保调用代码实际上是正确的.代码是:
$context = stream_context_create(array('http' => array(
'method' => "POST",
'header' => "Content-Type: application/xml",
'timeout' => 60.0,
'ignore_errors' => true, # return body even if HTTP status != 200
'content' => $send_xml
)));
$response = trim(file_get_contents($this->bulk_service_url, false, $context));
Run Code Online (Sandbox Code Playgroud)
我的所有问题都属于"标题"选项及其值,以及如何正确格式化并编写它.PHP文档,它下面的讨论,甚至stackoverflow研究产生非常不一致的结果.
1)我是否必须包含Content-Length标头,如果没有,PHP会正确计算吗?文档不包含它,但我看到很多人手动包含它,然后被PHP尊重或覆盖?
2)我是否必须将标题选项作为字符串或关联数组传递?手动说字符串,大多数将它作为字符串传递,但是这条评论说如果PHP是用--with-curlwrappers选项编译的,你必须将它作为数组传递.这是非常不一致的行为.
3)当作为字符串传递时,我是否必须包含终止\r\n字符?特别是当只指定一个标题时.手册没有提供这样的例子,手册页上的第一条评论确实包括它,第二条评论没有,再次没有明确规定如何指定.PHP会自动处理这两种情况吗?
服务器使用的是PHP 5.3.