Guzzle HTTP请求从POST转换为GET

问题描述 投票:2回答:4

[在尝试发布到外部API时,我发生了一件非常奇怪的事情,我尝试向URL发出POST请求,但Guzzle却发出GET请求(这是对此API的合法操作,但返回的内容与)。

这里是代码:

$request = $this->client->createRequest('POST', 'sessions', [
  'json' => [
    'agent_id' => $agentId,
    'url' => $url
  ],
  'query' => [
    'api_key' => $this->apiKey
  ]
]);

echo $request->getMethod(); // comes out as POST
$response = $this->client->send($request);
echo $request->getMethod(); // suddenly becomes GET

当我使用$this-client->post(…)时也会发生同样的事情>

我真的不知道下一步该怎么做。

[在尝试发布到外部API时,我发生了一件非常奇怪的事情,我尝试向URL发出POST请求,但Guzzle却发出GET请求(这是对此API的法律诉讼...] >

php guzzle
4个回答
2
投票

您可能会收到3xx状态代码,以便Redirect订户加入(默认情况下,重定向已启用)。从docs

[...]传递一个包含“ max”键的关联数组以指定重定向的最大数量,并可以选择提供“严格”密钥值,用于指定是否使用严格的RFC兼容重定向(表示将POST请求与POST请求一起重定向VS。大多数浏览器都通过GET请求重定向POST请求


1
投票

尝试将键“查询”更改为“正文”。


0
投票

请将query切换为form_params。在Guzzle 6中有效。


0
投票

我遇到了同样的问题。原因是当存在代码为301或302的位置重定向时,Guzzle会将Request-Method更改为“ GET”。我在RedirectMiddleware.php中找到了“问题代码”。

© www.soinside.com 2019 - 2024. All rights reserved.