2011-06-30 178 views
0

我有一个小问题。我想用curl加载这个页面'http://www.facebook.com/feeds/page.php?id=57084011597 & format = rss20'。这里是我尝试使用的代码,坚果我不能从它回来的东西。卷发请求失败

$head=array('Accept'=>'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
        'Accept-Charset'=>'ISO-8859-2,utf-8;q=0.7,*;q=0.3', 
        'Accept-Encoding'=>'gzip,deflate,sdch', 
        'Accept-Language'=>'ro-RO,ro;q=0.8,en-US;q=0.6,en;q=0.4', 
        'Cache-Control'=>'max-age=0', 
        'Connection'=>'keep-alive', 
        'Cookie'=>'datr=hroHTi2NZk2KleOaswb03Q_Q; lu=gg9lJcPeInHt6hnut7bviqQg; locale=en_US; e=n; L=2; c_user=100000596376783; sct=1309129360; xs=2%3Ad05dd80e364608525dd664ad73f6483f; act=1309410851554%2F5; presence=EM309410852L4N0_5dEp_5f1B00596376783F1X309410852168Y0Z11G309410768PCC', 
        'Host'=>'www.facebook.com', 
        'User-Agent'=>$_SERVER['HTTP_USER_AGENT']); 
$url='http://www.facebook.com/feeds/page.php?id=57084011597&format=rss20'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
    curl_setopt($ch, CURLOPT_HTTPHEADER,$head); 
    $result = curl_exec($ch); 

     return $result; 

我试过了没有设置标题,但它也没有奏效。 希望有人给我提供线索。

谢谢!

+1

'curl_error()'说什么? –

+0

是的,你得到的卷曲错误或PHP错误是什么? –

+0

为什么你需要这个页面的标题?它已经是一个RSS源,我认为设置这些标题不会有太大的区别,对吧? –

回答

5

这就是你的问题:$ur='http://www.facebook.com/feeds/page.php?id=57084011597&format=rss20';。你错过了一个“l”。

$url='http://www.facebook.com/feeds/page.php?id=57084011597&format=rss20'; 

此外,还有一个重定向,所以你需要添加:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

这我怎么发现的。我启用了使用curl_setopt($ch, CURLOPT_VERBOSE, true);详细的输出和看到这个:

< HTTP/1.1 302 Found 
< Location: http://www.facebook.com/common/browser.php 
< Content-Type: text/html; charset=utf-8 
< X-FB-Server: 10.43.97.37 
< X-Cnection: close 
< Date: Thu, 30 Jun 2011 06:48:54 GMT 
< Content-Length: 0 

更新,测试和工作:

的Facebook预计将指定的用户代理字符串。将其设置为curl_setopt($ch, CURLOPT_USERAGENT, '...');似乎可以解决问题。这是一个过于简单化的例子,它可以解决你的问题:

<?php 

$ch = curl_init('http://www.facebook.com/feeds/page.php?id=57084011597&format=rss20'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, array('User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Safari/534.45')); 

$response = curl_exec($ch); 
+0

对不起$ url。在原始文档中设置很好,我已经添加了curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,true);它说我的浏览器不兼容那是什么意思?我也试过没有头文件,但是响应是一样的 – Gigg

+0

你是否使它在你的电脑上工作? – Gigg

+0

@Iosub - 我通过终端(命令行)在我的Mac上完成了它。我确实得到了相同的通知,我通过谷歌阅读,RSS提要需要一个你没有看到的“钥匙”,我假设你需要“登录”或者传递一个有效的钥匙才能够下载内容 –