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