2012-07-25 68 views
0

我發佈了一些XML到web服務,我寫的代碼在所有其他情況下的作品就不在這個例子中。cURL XML發佈問題

這是我的代碼;

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $string); 
curl_setopt($ch, CURLOPT_ENCODING,'gzip'); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 45); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml")); 

$result = curl_exec($ch); 

curl_close($ch); 

return $result; 

它使返回500內部服務器錯誤是一樣的,如果你去直接到url所以它就像POST數據不被髮送。但我沒有檢查內容的長度,它似乎是..

任何想法?

回答

0

嘗試只是這

$ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_string); // NOTE used $xml_string to indicate its just a text string of XML format 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_NOPROGRESS, 0); 

    $result = curl_exec($ch); 
    curl_close($ch); 
+0

您好感謝您的回覆,我只是嘗試這樣做,這是給我同樣的錯誤500錯誤 – Phil 2012-07-25 16:02:24

+0

後它在轉儲腳本的var_dump($ _ POST)它來仔細檢查,然後echo $ result。 $字符串(或在我的情況下$ xml_string)爲空? – Waygood 2012-07-25 16:06:50

+0

add curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,1);將網站重定向到另一個頁面 – Waygood 2012-07-25 16:32:27