0

Instagram API をクエリしようとしましたが、CURLOPT_RETURNTRANSFER が想定どおりに機能していないようです。CURLOPT_RETURNTRANSFER は true に設定されていますが、応答が返ってこないのはブール値だけです。私が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;
}
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);

docsに記載されているように、本番環境では常に安全な SSL 条件下で作業することをお勧めします。安全な SSL 接続を確保するには、CURLOPT_SSL_VERIFYHOST を 2 に設定する必要があります。

于 2016-03-27T19:58:47.323 に答える
0

問題が何であるかを理解するためにprint_r(curl_getinfo($this->handler));直後に使用してください。curl_exec($this->handler);

于 2012-12-11T08:14:19.273 に答える
0

あなたのブール値は偽ですか?

false の場合は、エラーが発生している必要があります。

curl_exec 行の後に次を追加します。

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

new ClassName('http://someurl.com') を呼び出した後に getResponse() メソッドを呼び出していますか?

これを試して

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

EDIT:エラー出力メソッドを追加して呼び出して、curlエラーが発生したかどうかを確認することもできます

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