将VBS脚本转换为PHP

时间:2013-07-19 13:16:05

标签: php xml vbscript

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

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

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;

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

2 个答案:

答案 0 :(得分:1)

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

curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

你还需要返回转移

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

答案 1 :(得分:0)

在我看来,这就是正好你需要什么。这似乎是一个确切的翻译。

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

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

最好将主体数据构建为字符串并将其回显,以确保数据正确无误:

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

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