@EVOSandru6

Как отправить массив из одного элемента в Guzzle Post запросе?

Добрый день,

Мне нужно отправить в Dadata такой запрос:

curl -X POST \
> -H "Content-Type: application/json" \
> -H "Authorization: Token ${API_KEY}" \
> -H "X-Secret: ${SECRET_KEY}" \
> -d '[ "Срегей владимерович иванов" ]' \
> https://cleaner.dadata.ru/api/v1/clean/name


Подскажите пожалуйста - как отправить в dadata массив в теле запроса?

$name = 'Срегей владимерович иванов'

$data = [$name];

$client = new GuzzleHttp\Client(['headers' => [
    'Authorization' => 'Token ' . $key,
    'X-Secret' => $secret,
]]);

$response = $client->post($url, $data);

Client error: `POST https://cleaner.dadata.ru/api/v1/clean/name` resulted in a `400 Bad Request` response:
{"timestamp":"2020-11-26T10:41:05.869+0000","status":400,"error":"Bad Request","message":"Required request body is missi (truncated...)


Если меняю:

$data = [$name];
на
$data = [json_encode([$name])];

То ошибка та же.

$data = [$name];
на
$data = json_encode([$name]);

То ошибка ожидаемая:

Argument 2 passed to GuzzleHttp\Client::post() must be of the type array, string given, called in ...
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
@Stalinko
PHP'шник и фрилансер до мозга костей
RTFM: https://docs.guzzlephp.org/en/stable/request-optio...

$data = [$name];
$response = $client->post($url, ['json' => $data]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы