2012-07-25 67 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