PHP CURL curl_exec没有返回任何内容

时间:2013-10-14 18:53:02

标签: php xml wordpress curl

我正在尝试使用CURL从我的wordpress博客中检索XML数据。

这是我的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并获取数据?

1 个答案:

答案 0 :(得分:2)

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

要执行此操作,您必须将CURLOPT_FOLLOWLOCATION设置为true

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

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