GuzzleHTTP POST эквивалентно curl -X POST -H --data [email protected] https://api.test.com/accounts

У меня есть следующий запрос CURL к API: curl -X POST -H "X-Api-Key:somekey" --data "[email protected]" https://api.test.com/accounts

Какой эквивалентный скрипт использовать в GuzzleHTTP Psr7. Я пробовал следующее, но не работал, он не получил массив данных $query.

$query = [
'name'=>'MyName',
'email'=>'[email protected]',
];
$client = new Client([
   'base_uri' => 'https://api.test.com/v1/',
   'verify' =>'cert.pem',
]);

$headers=['form_params'=>$query];
try{
    $request = new Request('POST', 'accounts', $headers);           
    $response = $client->send($request);
} catch (\GuzzleHttp\Exception\ClientException $e) {
    die($e->getResponse()->getBody()->getContents()); exit;
}
var_dump($response->getBody());

person Marwan    schedule 16.05.2016    source источник
comment
Основываясь на этом ответе, вы должны поместить заголовок X-Api-Key в $headers (не параметры формы), а затем передать полную закодированную строку запроса name=myname&[email protected] в параметре $body, который следует за $headers. Однако я не использовал более новые API-интерфейсы Guzzle, чтобы убедиться в этом.   -  person Michael Berkowski    schedule 16.05.2016
comment
Спасибо, Майкл, ответ, который вы упомянули, помог мне исправить это, хотя я сделал другое решение, которое также работает, отправив form_params в качестве 2-го параметра в функцию send(): $response = $this-›client-›send($request, ['form_params'=›$запрос]);   -  person Marwan    schedule 16.05.2016
comment
Вы должны опубликовать собственное полное решение ниже в качестве ответа @Marwan.   -  person Michael Berkowski    schedule 16.05.2016