0

さて、これが私の状況です。XMLデータを安全なURL(ColdFusion Webサービス)にPOSTし、返された結果(XMLデータとして返される)を表示する必要があります。要件は次のとおりです。

  1. POSTリクエストである必要があります。
  2. XMLデータ文字列を使用する必要があります。
  3. XMLデータは、name=>valueペアの値部分である必要があります。(名前は何でもかまいません)
  4. name => valueのペアは、リクエストの本文に含まれている必要があります。
  5. コンテンツタイプヘッダーは「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でき、すべてが正常に機能します。助けてください!

4

1 に答える 1

0

あなたのxmlは、郵便で送信された文字列でなければなりません。

于 2012-06-01T20:31:33.097 に答える