さて、これが私の状況です。XMLデータを安全なURL(ColdFusion Webサービス)にPOSTし、返された結果(XMLデータとして返される)を表示する必要があります。要件は次のとおりです。
- POSTリクエストである必要があります。
- XMLデータ文字列を使用する必要があります。
- XMLデータは、name=>valueペアの値部分である必要があります。(名前は何でもかまいません)
- name => valueのペアは、リクエストの本文に含まれている必要があります。
- コンテンツタイプヘッダーは「application/x-www-form-urlencoded」である必要があります
それ以外の制限はありません。PHP / cURLでこれを実行しようとしていますが、機能しないようです。Webサービスとの接続を正常に確立できますが、投稿本文が送信されていないことを示すエラーが返されます。これが私のコードです:
$url = "https://coldfusion.cfm";
$username = "xxxxx";
$password = "xxxxxxx";
$array = array(
"idata" => "<?xml version='1.0' standalone='yes'?>
<XMLDATA1>
<XMLDATA2>
<XMLDATA3>Query</XMLDATA3>
<XMLDATA4>Platinum</XMLDATA4>
<XMLDATA5>1</XMLDATA5>
</XMLDATA2>
<XMLDATA6>
<XMLDATA7>2440031317</XMLDATA7>
</XMLDATA6>
</XMLDATA1>");
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $array);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($ch);
if(curl_errno($ch))
print curl_error($ch);
else
curl_close($ch);
echo $output;
誰かが私が間違っていることを教えてもらえますか?ChromeでRESTコンソールを使用する場合、リクエストペイロードオプションのリクエストパラメータを介してXMLデータを名前=>値のペアとしてPOSTでき、すべてが正常に機能します。助けてください!