Как собрать запрос Gzzle GET для данных -d в curl - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь получить доступ к API с помощью Guzzle в Laravel 5.5.

Команда в curl выглядит следующим образом:

curl http://apiurl.com/getRequest -d "api_key=token_value"

Теперь, используя Guzzle, я начал кодировать, как показано ниже:

$client = new Client(['base_uri' => 'http://apiurl.com/']);

$response = $client->request('GET', 'getRequest', [
             'headers' => [
                           'api_key' => ['token_value']
                         ]
]);
var_dump($response->getStatusCode());
var_dump(json_decode($response->getBody(), true));

Теперь я могу видеть statusCode как 200 и getBody как Null. Но когда я использую тот же запрос, используя curl, я могу увидеть полные данные.

Может кто-нибудь решить это, пожалуйста?

1 Ответ

0 голосов
/ 02 июля 2018

При сравнении различий между curl и Guzzle я настоятельно рекомендую использовать -v (curl) и параметр запроса debug (Guzzle ). Подробный вывод позволяет визуально сравнивать запросы, которые передает каждое программное обеспечение.

Страница man curl указывает, что -d и --data отправляют POST-запросы.

(HTTP) Отправляет указанные данные в запросе POST на сервер HTTP, так же, как браузер делает, когда пользователь заполнил HTML сформировать и нажать кнопку отправки. Это заставит локон пройти данные на сервер, используя тип контента применение / х-WWW-форм-urlencoded.

Требуется пара изменений, чтобы отправить желаемый запрос с помощью Guzzle:

$response = $client->request('POST', $uri, [
    'form_params' => [
        'api_key' => $key_value,
    ],
]);

Первое изменение - это тип отправляемого запроса (GET => POST). Второе, это использование form_params. Параметр запроса form_params используется для отправки application/x-www-form-urlencoded запросов POST.

...