【发布时间】:2011-12-16 12:02:26
【问题描述】:
我一直在尝试发布 XML 并从服务器获得响应,但没有成功。
以下是服务器端的条件:
- 对服务器的请求应该通过 HTTP 1.1 作为 XML 发送。
以下要求适用于 HTTP 请求:
- 请求类型应该是POST;
- 应存在
Content-Length标头,并且请求的总长度应小于16KB; - 应该存在
Content-Type标头,包含媒体类型值text/xml;
这是我的脚本:
$url = "http://somedomain.com";
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<Request PartnerID="asasdsadsa" Type="TrackSearch"> <TrackSearch> <Title>love</Title> <Tags> <MainGenre>Blues</MainGenre> </Tags> <Page Number="1" Size="20"/> </TrackSearch> </Request>';
$header = "POST HTTP/1.1 \r\n";
$header .= "Content-type: text/xml \r\n";
$header .= "Content-length: ".strlen($xml)." \r\n";
$header .= "Connection: close \r\n\r\n";
$header .= $xml;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);
$data = curl_exec($ch);
echo $data;
if(curl_errno($ch))
print curl_error($ch);
else
curl_close($ch);
这给了我:
HTTP Error 400. The request URL is invalid.
Bad Request - Invalid URL
【问题讨论】:
-
您可以访问 somedomain.com 的服务器日志吗?很难说 400 到底想说什么..
-
您可能想尝试将 XML 发布到您自己服务器上的脚本中,并确保接收到的数据符合您的预期。