0

好的,这就是我的情况。我需要将 XML 数据发布到安全 URL(ColdFusion Web 服务)并显示返回的结果(作为 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 数据作为名称 => 值对发布,并且一切正常运行。请帮忙!

4

1 回答 1

0

Your your xml has to be a string sent via post.

于 2012-06-01T20:31:33.097 回答