私はXMLを投稿し、サーバーからの応答を得ようとしていますが、運がありません。ここでcurlを使用してXMLを正しく送受信する方法
は、サーバー側の条件は以下のとおりです。サーバーへ
- リクエストはHTTP 1.1を介してXMLとして送信する必要があります。
次の要件は、HTTPリクエストに適用されます。
- 要求タイプがPOSTである必要があります。
Content-Length
ヘッダーが存在し、要求の合計長は16KB未満でなければなりません。- ヘッダーが存在し、メディアタイプ値
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が実際に何を言おうとしているのかを言うのは難しいです。 – jlb
自分のサーバー上のスクリプトにXMLを投稿し、受け取ったデータが期待どおりであることを確認することができます。 –