我正在尝试POST
数据到远程AWS API。
数据应该是JSON
部分的body
。
使用邮递员,我可以发送数据,并且一切正常:
现在,尝试使用GuzzleHttp\Psr7\Request
这样做,我正在这样做:
$request = new \GuzzleHttp\Psr7\Request(
'POST',
'AWS API URL',
['Host' => 'AWS HOST', 'body' => '{"json": "my JSON"}']
);
$request = $signer->signRequest($request, $credentials);
$response = $client->send($request);
请求成功,但是没有数据更新!好像没有收到'body'
。
我无权访问远程API日志文件。
所以我的问题是,这是在Guzzle请求的正文部分中发布数据的正确方法吗?
谢谢。
答案 0 :(得分:1)
根据链接的答案,您需要在请求中传递以下选项:
[GuzzleHttp\RequestOptions::JSON => ['key1' => 'value1', 'key2' => 'val2']]
或:
['json' => ['key1' => 'value1', 'key2' => 'val2']]
但是由于您需要首先构建Request对象,因此您应该能够将此选项作为Client::send
的第二个参数传递:
$response = $client->send($request, [
GuzzleHttp\RequestOptions::JSON => ['key1' => 'value1', 'key2' => 'val2']
];