guzzlephp 401 несанкционированная проблема

Я пытаюсь отправить HTTP-запрос на публикацию

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
curl_close($ch);
return $result;

где заголовки

$headers = [
            'Authorization: key=' . $api_access_key,
            'Content-Type: application/json',
        ];

и почтовые поля

$fields = [
            'registration_ids' => $registrationIds,
            'data'             => [
                'title'   => $title,
                'message' => $message,
                'type'    => $type,
            ],
        ];

какой ответ в порядке и как ожидалось, но если я вызову этот запрос с помощью клиента guzzlehttp с помощью

$URL='https://android.googleapis.com/gcm/send';

$client  = new \GuzzleHttp\Client(['http_errors' => false]);

$response = $client->request('POST', $URL,['form_params'=>$fields],
                                 ['headers'=>[
                                  'Authorization' => 'key='.$api_access_key,
                                   'Content-Type' => 'application/json']]);

return $response->getBody()->getContents();

Это ответ с 401 неавторизованным. Где моя проблема? Спасибо.


person Iftakharul Alam    schedule 08.08.2016    source источник


Ответы (1)


Я предполагаю, что вы используете Guzzle 6. request() метод имеет только 3 параметра., поэтому вам следует объединить два массива.

Что-то вроде этого:

$response = $client->request('POST', $URL, [
    'form_params' => $fields,
    'headers'=> [
        'Authorization' => 'key='.$api_access_key,
        'Content-Type' => 'application/json'
]]);
person Alexey Shokov    schedule 08.08.2016