1

我从我正在处理的一家公司获得了一段示例代码,说明如何将 XML 数据发布到 URL,然后读取响应。对我来说不幸的是,在 VBS 中,我没有很好的工作知识:

这是我感兴趣的代码部分。这应该传递读入 oXML 的 XML 文件,然后发布它并读取响应:

set oHTTP = CreateObject("Microsoft.XMLHTTP")
oHTTP.open "POST", "http://www.ophub.net/opxml/response.asp", false,00092,QW 'file url - with dealers Account number, Password
oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oHTTP.setRequestHeader "Content-Length", Len(sRequest)
oHTTP.send oXML

根据我在 PHP 中对此的理解,这可以使用 cUrl 完成,我从网上阅读的位中得出以下内容,但这不起作用,我不知道为什么。

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: application/x-www-form- urlencoded"));
curl_setopt($ch, CURLOPT_URL, "http://www.ophub.net/opxml/response.asp");
curl_setopt($ch, CURLOPT_USERPWD, "00092:QW");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "XML=" . $xml);
$content=curl_exec($ch);
echo $content;

我确信我离我需要的东西不远,但我似乎无法到达那里,所以任何 hep 都会非常感激。

4

2 回答 2

1

在您的帖子字段中只需设置 xml 无需设置xml=

curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

你还需要回传 true

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
于 2013-07-19T13:25:08.610 回答
0

在我看来,这正是您所需要的。这似乎是一个准确的翻译。

我能看到的唯一两个潜在问题是:

  • 您的 PHP 代码似乎在Content-Type标头值中间有一个空格,这很可能会破坏事情
  • 如果您还没有这样做,您将需要在将$xml数据作为消息的一部分发送之前对数据进行 URL 编码application/x-www-form-urlencoded(线索在类型名称中:-P),您可以使用urlencode().

将正文数据构建为字符串并回显它可能是一个好主意,以确保数据正确:

echo 'XML=' . urlencode($xml);

记录在案的包装 XML 消息application/x-www-form-urlencoded是一种可怕的做事方式。但是我遇到过不止一个 API 可以做到这一点,所以我假设您的代码在这方面对于您尝试使用的 API 是正确的。

于 2013-07-19T13:25:45.550 回答