我从一家正在处理的公司获得了一段代码示例,用于将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;
我确信我不能远离我的需要,但我似乎无法到达那里,所以任何人都会非常感激。
答案 0 :(得分:1)
在您的帖子字段中,只需设置xml,无需设置xml=
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
你还需要返回转移
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
答案 1 :(得分:0)
在我看来,这就是正好你需要什么。这似乎是一个确切的翻译。
我能看到的唯一两个潜在问题是:
Content-Type
标头值的中间有一个空格,这很可能会破坏事情$xml
数据进行URL编码,然后再将其作为application/x-www-form-urlencoded
消息的一部分发送(类型名称中的线索:-P),您可以使用urlencode()
。最好将主体数据构建为字符串并将其回显,以确保数据正确无误:
echo 'XML=' . urlencode($xml);
对于记录包装application/x-www-form-urlencoded
中的XML消息是一种可怕的做事方式。但我遇到过多个API,所以我假设您的代码在这方面对于您尝试使用的API是正确的。