2011-06-30 24 views
0

小さな問題があります。私はカールを使ってこのページ 'http://www.facebook.com/feeds/page.php?id=57084011597 & format = rss20'を読み込みたいと思います。ここでは私が使用しようとしているコードは、ナット私はそれから戻って何かを得ることはできません。Curlリクエストが失敗しました

$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"を欠いている。

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

これを私が見つけた方法:あなたが追加する必要がありますので、

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

はまた、リダイレクトがあります。テストされ、作業、

< 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_VERBOSE, true);を使用して冗長な出力を可能にし、これを見ました。 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

あなたはあなたのPCでそれを動作させましたか? – Gigg

+0

@Iosub - 私はターミナル(コマンドライン)を通して私のMacでやりました。私は同じ通知を受けました。私はRSSフィードにあなたの持っていないような "キー"が必要だと読んでいます。 –

関連する問題