2013-10-14 165 views
1

我想从我的wordpress博客使用CURL检索XML数据。PHP CURL curl_exec不返回任何东西

这是我的PHP:

$ch = curl_init("http://www.hazelandruby.com/blog/feed"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml')); 
$data = curl_exec($ch); 
print_r(curl_getinfo($ch)); 
curl_close($ch);//close connection 
unset($ch); 
var_dump($data); 

$data是一个空字符串。 curl_getInfo给了我这样的信息:

Array ([url] => http://www.hazelandruby.com/blog/feed [content_type] => text/html [http_code] => 301 [header_size] => 335 [request_size] => 99 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.039749 [namelookup_time] => 0.001784 [connect_time] => 0.001862 [pretransfer_time] => 0.001866 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => 0 [starttransfer_time] => 0.03974 [redirect_time] => 0 [certinfo] => Array () [redirect_url] => http://www.hazelandruby.com/blog/feed/) 

您可以访问XML文件本身:http://www.hazelandruby.com/blog/feed/

最后,我希望能够使用这一个SimpleXMLElement,但它不工作。我有我的PHP吗?是wordpress输出正确的XML吗?如果没有(我更喜欢不改变WordPress的做法),我怎样才能将URL解释为XML并获取数据?

回答

2

根据您的curl_getinfo()调用返回的标头,特别是[http_code] => 301,请求正在被重定向,但您尚未告知curl允许它跟随它。

要做到这一点,你必须设置CURLOPT_FOLLOWLOCATIONtrue

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

而且,因为它是相关的,它重定向到URL是http://www.hazelandruby.com/blog/feed/,原来的网址与附加/。您应该能够通过将结尾/添加到原始URL(希望= P)来“修复”问题。

+0

谢谢!我所需要的只是将追踪的“斜线”添加到网址的末尾。 – Joao