2012-12-11 181 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