0

我试图查询 Instagram API,但 CURLOPT_RETURNTRANSFER 似乎没有按预期的方式工作。CURLOPT_RETURNTRANSFER 已设置为 true,但我没有得到响应,我得到的只是一个布尔值。从我读到的 CURLOPT_RETURNTRANSFER 到 true 我在下面这样做了。请指教。谢谢

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;
}
4

4 回答 4

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 条件下工作,如文档中所述,应将 CURLOPT_SSL_VERIFYHOST 设置为 2 以确保安全的 SSL 连接。

于 2016-03-27T19:58:47.323 回答
0

立即使用print_r(curl_getinfo($this->handler));curl_exec($this->handler);找出问题所在。

于 2012-12-11T08:14:19.273 回答
0

你是在调用 new ClassName('http://someurl.com') 之后调用 getResponse() 方法吗?

尝试这个

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

编辑:您也可以调用添加错误输出方法来查看是否发生了一些 curl 错误

public function last_error() {
    echo curl_error($this->handler);
}
于 2012-12-11T07:04:28.883 回答
0

你的布尔值是假的吗?

如果它是假的,你一定有一个错误。

在 curl_exec 行之后添加以下内容:

if(curl_errno($this->handler)) 
{
   echo curl_error($this->handler);
}
于 2012-12-11T06:56:48.963 回答