当前位置: 首页 > 知识库问答 >
问题:

Guzzle http和Laravel Http post方法替换为get方法。不允许405方法

司徒耀
2023-03-14

关于问题的一些信息:

  • 我使用POST方法创建了guzzle客户端,但它被替换为GET方法。
  • 我尝试在Laravel 7.x上使用Illuminate\Support\Facades\Http,但得到同样的错误。
  • API服务器是Django Rest Framework。
  • 我得到了405方法不允许的响应。

我的代码使用 guzzle:

public static function post($url, $headers, $body)
{
    $client = new Client([
        'headers' => $headers
    ]);

    $response = collect();

    try {
        $response->code = 200;
        $response->body = json_decode($client->post($url, $body)->getBody()->getContents());
    } catch (RequestException $e) {
        $response->code = $e->getCode();
        $response->body = $e->getResponse() ? $e->getResponse()->getBody()->getContents() : $e->getMessage();
        $response->url = $url;
    }

    return $response;
}

public static function posting()
{
    $url = 'http://xapi-staging.uii.ac.id';
    $headers = [
        'Content-Type' => 'application/json',
        'Authorization' => ""
    ];
    $body = [
        'form_params' => [
            "parameter" => "value"
        ]
    ];

    return static::post($url, $headers, $body);
}

dd(static::posting());

我同时使用form_params和json,但仍然得到相同的错误。

然后我使用Laravel Illuminate\Support\Facades\Http

Http::withHeaders([
    'Authorization' => ""
])->post('http://xapi-staging.uii.ac.id', [
    "parameter" => "value",
]);

请参见照明\Support\Facades\Http文档,网址:https://laravel.com/docs/7.x/http-client#request-资料

结果使用Laravel照明\支持\Facades\Http

方法是GET而不是POST

我的路线:

我用邮递员和卷发。它起作用了!该死

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://xapi-staging.uii.ac.id",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n    \"parameter\": \"value"",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ey..",
    "Content-Type: text/plain"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

共有1个答案

满博
2023-03-14

问题是…您应该使用http的https://instad://

 类似资料:
  • 我得到了405请求方法'GET'在app engine的文件上传过程中不受支持,但在我的本地沙箱中相同的代码运行正常 看起来像bbloservice回调请求应该是POST类型后POST/_ah/上载/...但是当我用Firebug看的时候,它是一个带有以下头的GET请求,我确实在@Controller类中定义了请求处理程序,该类具有方法类型请求方法。POST 标题 响应Headersview源允许

  • 我有一个非常简单的Spring引导应用程序,它由以下代码保护: 这个想法是为了保护“admin”部分。它公开了一个RESTAPI。问题是所有的帖子都被退回了 405方法不允许 如果我从应用程序中删除安全启动器,它就会工作。这让我相信安全配置是问题所在。但我不知道怎么做。

  • 我有一个restcontroller和post方法,带有以下url和json请求。http://server/member/sc/v1/limited-liability/medicare 使用post方法和json请求在本地触发请求时,获得正确的响应。但在docker中以spring boot应用程序的形式运行会将异常作为不允许的方法抛出。最初,我将这个docker服务部署为put方法。现在我转

  • 问题内容: 我正在开发flask注册表格,但收到错误消息: 码: registration.html: 当我访问时,我收到错误消息。我究竟做错了什么? 问题答案: 这是因为在定义路由时仅允许POST请求。 当你在浏览器中访问时,它将首先执行GET请求。只有提交表单后,浏览器才会执行POST。因此,对于像你这样的自我提交表单,你需要同时处理两者。 使用 应该管用。

  • 问题内容: 我打算使用Ajax将跨域请求发送到soap Web服务。Web服务的URL是:http://example1.asmx?op = GetVOD 我的代码: 在IIS 7服务器端,我已经将这些行添加到文件web.config中 当我在Chrome上运行客户端代码时,出现405错误: 有谁知道如何解决这个问题? 预先感谢 问题答案: 听起来像Web DAV正在阻碍。这是删除它的配置: ht

  • 我正在使用ajax进行表单更新。当我在ajax中使用GET方法时,它工作得很好,但当我使用Post方法时,它抛出了错误405 method,这是不允许的。我正在本地主机上测试这个。我以前在localhost中做过,效果很好。顺便说一句,我用的是Laravel5.2。 这是我的ajax代码。 这是我在视图中使用的脚本 这是我的路线 当ajax函数和路由中的方法更改为GET时,它会打印在控制台中传递的