要求:发布身体数据

时间:2019-12-20 09:51:29

标签: php request http-post guzzle

我正在尝试POST数据到远程AWS API。

数据应该是JSON部分的body

使用邮递员,我可以发送数据,并且一切正常:

enter image description here

现在,尝试使用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请求的正文部分中发布数据的正确方法吗?

谢谢。

1 个答案:

答案 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']
];