Ошибка использования конечной точки API при использовании GuzzleHttp - PullRequest
0 голосов
/ 03 сентября 2018

Я использую Guzzle для использования API, но по некоторым причинам я получаю эту ошибку:

http_build_query (): параметр 1 должен быть массивом или объектом. Указано неверное значение.

Я не знаю, что я могу делать неправильно. Это мой код:

$data = ["name" => "joe doe"];
$jsData = json_encode($data);

$headers =  [
    'content-type' => 'application/json',
    'Authorization' => "Bearer {$token}"
];

$call = $this->client->post(env('URL'),[
    "headers" => $headers,
    'form_params' => $jsData
]);

$response = json_decode($call->getBody()->getContents(), true);

Редактировать

$data = ["name" => "joe doe"];

$headers =  [
    'content-type' => 'application/json',
    'Authorization' => "Bearer {$token}"
];

$call = $this->client->post(env('URL'),[
    "headers" => $headers,
    'form_params' => $$data
]);

$response = dd($call->getBody()->getContents(), true);

Ошибка клиента: POST http://localhost/send в результате 400 BAD REQUEST ответ: {"error": {"code": 400, "message": "Не удалось декодировать объект JSON: невозможно декодировать объект JSON", "u (усеченный ...)

1 Ответ

0 голосов
/ 03 сентября 2018

Причина, по которой вы видите ошибку, состоит в том, что form_params должно быть array, но вы запускаете массив через json_encode, который возвращает строку:

$data = ["name" => "joe doe"];
$jsData = json_encode($data);

// ...

    'form_params' => $jsonData

Вы должны просто передать данные в виде массива, не пропуская их через json_encode:

$data = ["name" => "joe doe"];

// ...

$call = $this->client->post(env('URL'), [
    "headers" => $headers,
    'form_params' => $data
]);
...