【发布时间】:2012-02-14 20:07:38
【问题描述】:
我已经通过命令行 curl 将 XML 发布到服务器并且我已经完全成功了。我实际设置的唯一选项是将内容类型设置为 application/xml 的标头。
当我转身在 PHP 中尝试此操作时,出现 500 服务器错误。
至于 curl 选项,我设置如下:
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
我什至已经将 PHP 应用程序的 XML 输出复制并粘贴到命令行 curl 中,而且效果很好。我已经尝试了不同组合的各种其他卷曲选项,但没有运气。
如果我不得不猜测发生了某种编码问题,但我已经尝试对数据进行 urlencoding,但实际上我得到了一个错误的请求而不是 500。
我完全不知所措,所以如果有人有任何想法,我很想听听。
谢谢!
【问题讨论】:
-
快速补充:服务器响应是空异常错误,但再次发送的数据应该相同...
-
500 通常是一个简单的语法问题,打开错误报告,您可能会找到它。
-
对不起,应该更清楚。 500 来自 curl 正在与之通信的服务器。
-
嗯 ...我认为如果您从远程服务器返回 500 错误,则他们可能会遇到问题(只要
$request是有效的 XML,尽管我会期待一个400 Bad Request)。我没有看到您发布的代码有任何问题。您可能会在问题中添加任何其他代码吗?或者可能是您尝试发布的 XML?