2013-07-19 75 views
1

我已經從我正在處理如何將XML數據發佈到URL然後閱讀響應的公司獲取示例代碼片段。不幸的是,對於我來說,這在VBS中我沒有很好的工作知識:將VBS腳本轉換爲PHP

這是我感興趣的代碼部分。它應該傳遞讀入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明白這個這個可以,捲曲做,我想出了從位以下,我在網上看了,但這不工作,我不知道爲什麼。

$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將非常感激。

回答

1

在您的文章場剛剛設置的XML不需要設置xml=

curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 

你還需要返回傳遞真實

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
+0

我知道這將是簡單的事情!我愛你!!!! :) –

+0

而你的返回轉移編輯是最後一點!太感謝了! –

0

它看起來對我來說,這是正是你需要什麼。這似乎是一個確切的翻譯。

,我能看到的只有兩個潛在的問題是:

  • 你的PHP代碼似乎有一個空間,在Content-Type頭的中間值,這很可能會破東西
  • 你會的,如果您尚未這樣做,則需要對$xml數據進行網址編碼,然後將其作爲application/x-www-form-urlencoded消息(類型名稱:-P中的線索)的一部分發送,您可以使用urlencode()執行此操作。

它可能是一個好主意,建身的數據作爲字符串和回聲出來,以確保數據的正確性:

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

爲了記錄在案包裝XML消息在application/x-www-form-urlencoded是可怕的做事方式。但是我遇到了不止一個API,所以我會假設你的代碼在你嘗試使用的API的這方面是正確的。

+0

這不是確切的翻譯,原始代碼中沒有名爲'xml'的後期變量, – DevZer0

+0

@ DevZer0我假設它的元素是由原始代碼中的'oXML'處理的,儘管可能並非如此。 'Content-Type'頭部表明這可能是正確的 - 這就是爲什麼我建議回顯身體字符串以驗證數據是OP所期望的數據。 – DaveRandom