正如您在代碼中看到的,我試圖執行FQL查詢並檢索結果。我生成的查詢完全正確,因爲我已通過瀏覽器對其進行了測試。我首先使用file_get_contents()來檢索網頁,但它給我一個400錯誤的請求錯誤。有人建議使用cURL。PHP cURL不提取網頁
下面給出的代碼段給我false爲$查詢。如果我取消註釋urlencode()行,則腳本會一直點亮並達到最大執行時間限制。我究竟做錯了什麼?
$limit = $start + 100;
$query = "select post_id, created_time, actor_id, message, attachment, comments, likes, type from stream where source_id = $id limit $start, ". $limit;
$url = "https://graph.facebook.com/fql?q=$query&access_token=$token";
//$url = urlencode($url);
echo $url.'<br>';
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_PROXY, "tcp://10.3.3.3:8080");
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Hi!');
$query = curl_exec($curl_handle);
var_dump($query);
curl_close($curl_handle);
編輯:訪問另一個URL的file_get_contents給了我這個錯誤「未能打開流:無法通過代理連接到HTTPS服務器」。由於這也是HTTPS,cURL也可能面臨同樣的問題。我認爲這可能會導致一個答案。
確實重用$ query有什麼危害嗎?嘗試了你的第二個建議。沒有工作 – wirate 2012-04-16 16:31:26
不,它沒有。儘量保持這一點儘可能簡單。你真的需要'curl_setopt($ curl_handle,CURLOPT_USERAGENT,'嗨!');'? – micha 2012-04-16 16:37:51
Facebook的'$ token'目前不**需要URL編碼,但如果將來更改其格式,則不會因此而受傷。我總是在使用Facebook的API時謹慎行事。 – ceejayoz 2012-04-16 16:39:45