Guzzle发出GET请求,而不是POST。

问题描述 投票:0回答:1

我相信这一定会被标记为重复的,但我已经看了所有给定的关于同一主题的问题,并尝试了许多建议的解决方案,但它们没有工作。

我在一个laravel项目中,我有一个帖子请求通过guzzle发出去。

           $client = new \GuzzleHttp\Client();
           $response = $client->request('POST', $url, [
                'headers' => [
                    'Authorization' => 'Bearer ' . $apiToken,
                    'Accept' => 'application/json',
                    'Content-Type' => 'application/json',
                    'allow_redirects' => false,
                    // 'allow_redirects'=>['strict'=>true]
                ],
                'json' => json_decode($logText, true)
            ]);

我一直得到的回复是 "message": "The GET method is not supported for this route. Supported methods: POST."

我已经检查过了,确实,它正在向同一个GET请求发送一个 $url 上面指定的。

我没有这些 allow_redirects 的设置,但当我在网上搜索时,这两个设置都被作为潜在的解决方案。不幸的是,这两个选项都会导致相同的错误信息。The GET method is not supported for this route.

为什么我的POST请求会变成GET请求?

我也试过 $client->post 取而代之,那也变成了一个GET请求。

我还仔细检查了GET错误信息是不是真的来自POST请求里面:不是的。POST路由根本没有被击中。

PHP版本 7.2, Laravel版本 6.0.2, Guzzle版本 6.5.3

php laravel guzzle
1个回答
2
投票

检查服务器上的重定向,如HTTP -> HTTPS。重定向总是一个GET请求,这会搞乱非GET路由。一直使用正确的协议(如始终使用HTTPS)将绕过重定向。

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