2012-12-11 159 views
0

我試圖查詢一個Instagram API,但CURLOPT_RETURNTRANSFER似乎沒有按照它假設的方式工作。 CURLOPT_RETURNTRANSFER已被設置爲true,但我沒有得到響應,我得到的只是一個布爾值。從我讀過的CURLOPT_RETURNTRANSFER到我在下面做過的真實。請指教。謝謝CURLOPT_RETURNTRANSFER沒有返回響應

public function __construct($uri) { 
    $this->handler = curl_init($uri); 
      $this->_setOptions(); 
} 

protected function _setOptions() { 
    curl_setopt($this->handler, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($this->handler, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($this->handler, CURLOPT_USERAGENT, self::DEFAULT_USER_AGENT); 

} 

public function getResponse() { 
    $response = curl_exec($this->handler); 
    curl_close($this->handler); 
    return $response; 
} 

回答

0

布爾值是否爲false?

如果它爲false,則必須有錯誤。

添加如下因素的curl_exec行之後:

if(curl_errno($this->handler)) 
{ 
    echo curl_error($this->handler); 
} 
+0

我收到的錯誤消息是: SSL證書問題,請驗證CA證書是否正常。詳細信息:錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗 我試圖運行這個網址: https://api.instagram.com/v1/tags/nyp/media/recent?client_id=db5ec075c6da4224aafcf55bf3a0bc43 它可以在瀏覽器上運行,但不能在應用程序上運行。任何想法 ? –

0

你叫的GETRESPONSE()方法調用新的類名之後( 'http://someurl.com')?

試試這個

$x = new ClassName('http://www.google.com'); 
var_export($x->getResponse(); 

編輯:您也可以撥打添加錯誤輸出方法,看看是否有些捲曲發生錯誤

public function last_error() { 
    echo curl_error($this->handler); 
} 
0

使用print_r(curl_getinfo($this->handler));curl_exec($this->handler);之後推測的問題是什麼。

2

你可能會寫你的功能如下解決這個問題:

protected function _setOptions() { 
    curl_setopt($this->handler, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($this->handler, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($this->handler, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($this->handler, CURLOPT_USERAGENT, self::DEFAULT_USER_AGENT); 
} 

這樣可以避免檢查SSL協議。

正如你可以設置CURLOPT_SSL_VERIFYHOST多了一種選擇:

curl_setopt($this->handler, CURLOPT_SSL_VERIFYHOST, 0); 

建議總是在生產環境安全的SSL條件下工作,因爲它是在docs提到,CURLOPT_SSL_VERIFYHOST應設置爲2以確保安全的SSL連接。

+0

我認爲這是答案,即使話題是從2012年開始! – Kangoo13

+1

事實上,即使這個問題仍然存在...... – Kruser