Вы должны вручную закодировать ваш PHP-массив в JSON, чтобы использовать его с Psr7\Request
$secondRequest = new Psr7\Request('POST', 'api/anotherapi', $searchHeaders, json_encode([
'field1' => 'val1',
'field2' => 'val2',
'field3' => json_encode($firstResponse),
'field4' => 'val3'
]));
или использовать ->postAsync()
вместо ->sendAsync()
, это проще
$client = new Client();
$headers = [];
$finalResponse = $client->getAsync('/api/someapi', ['headers' => $headers])
->then(function ($response1) use ($client) {
$firstResponse = json_decode($response1->getBody()->getContents());
// $firstResponse is an array
$secondHeaders = [];
$secondResponse = $client->postAsync('api/anotherapi', [
'headers' => $secondHeaders,
'json' => [
'field1' => 'val1',
'field2' => 'val2',
'field3' => json_encode($firstResponse),
'field4' => 'val3'
],
])->then(function ($response2) use ($client) {
return $response2->getBody()->getContents();
});
// You don't need to call ->wait() here, Guzzle will resolve the promise for you
return $secondResponse;
});
return $finalResponse->wait();