首页 > 解决方案 > Guzzle 请求:发布正文数据

问题描述

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

数据应该是JSON关于body部分的。

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

在此处输入图像描述

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

谢谢。

标签: phprequesthttp-postguzzle

解决方案


根据链接的答案,您需要将以下选项与您的请求一起传递:

[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']
];

推荐阅读