【问题标题】:Guzzle Request : Post body dataGuzzle 请求:发布正文数据
【发布时间】:2020-04-12 20:14:58
【问题描述】:

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

数据应该是body 部分上的JSON

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

谢谢。

【问题讨论】:

  • @Jeto,我已经编辑了我的问题,request 应该签名。所以我应该提供关于请求对象的数据,而不是client->send()。至少,这是我的分析。

标签: php request http-post guzzle


【解决方案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']
];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多