-1

私のコード:

private static $API_ACCESS_KEY = 'AIzaSyDG3fYAj1uW7VB-wejaMJyJXiO5JagAsYI';
$headers = array(
            'Authorization: key=' .self::$API_ACCESS_KEY,
            'Content-Type: application/json');

private function useCurl(&$model, $url, $headers, $fields = null) {
            // Open connection
                $ch = curl_init();
            if ($url) {
                // Set the url, number of POST vars, POST data
                curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_POST, true);
                curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            // Disabling SSL Certificate support temporarly
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            if ($fields) {
                curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
            }

            // Execute post
            $result = curl_exec($ch);
            if ($result === FALSE) {
                die('Curl failed: ' . curl_error($ch));
            }

            // Close connection
            curl_close($ch);

            return $result;
    }
}

エラー:

curl_setopt(): CURLOPT_HTTPHEADER 引数を使用してオブジェクトまたは配列を渡す必要があります

4

1 に答える 1

0

$headers は単純に arary ではありません。配列であることを確認し、そうでない場合は InvalidArgumentException をスローします。このような:

private function useCurl(&$model, $url, $headers, $fields = null) {
if(!is_array($headers)){throw new InvalidArgumentException('headers MUST be an array!');}
...

または、PHP7 以降、

private function useCurl(&$model, $url, array $headers, $fields = null) {
...

$headers という名前の変数を宣言している間、関数定義の外側、つまり関数のスコープの外側にあることに注意してください。関数の $headers は入力引数 #3 です

于 2016-06-15T15:09:54.447 に答える