【问题标题】:How can I use Guzzle to send a PUT request?如何使用 Guzzle 发送 PUT 请求?
【发布时间】:2019-12-12 15:35:12
【问题描述】:

有人知道使用 Guzzle 进行 PUT 的正确方法吗?我的代码不起作用 但我的帖子方法有效

 $enrolment = $client->request('PUT', $url,[
       'form_params' => [
           'contactID' =>12345,
           'type' =>'w'
        ],
       'headers' => [
           'apitoken' => $api_token,
           'wstoken' => $ws_token
        ]
 ]);

导致500 Internal Server Error 响应:↵{"DATA":"","ERROR":true,"MESSAGES":"key [TYPE] 不存在","CODE":"0","详情":""}

【问题讨论】:

    标签: php laravel api guzzle guzzle6


    【解决方案1】:

    PUT 请求不接受 form_params 类型作为请求选项,因此它可能会忽略该设置。

    来自Docs

    form_params

    用于发送应用程序/x-www-form-urlencoded POST 请求。

    也许你可以尝试使用 json 来处理PUT 请求。

    json part of Docs 中,它也使用PUT

    $enrolment = $client->request('PUT', $url,[
           'json' => [
               'contactID' =>12345,
               'type' =>'w'
            ],
           'headers' => [
               'apitoken' => $api_token,
               'wstoken' => $ws_token
            ]
     ]);
    

    【讨论】:

    • 如果它不起作用,我会检查这两件事: 1. 检查请求,看看 json 数据部分是否确实在发送。 2.查看响应服务器是否接受json格式的数据。既然你说form_params 的 POST 版本工作正常,也许它只接受表单数据。
    猜你喜欢
    • 2015-03-25
    • 1970-01-01
    • 2018-02-07
    • 2017-08-28
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    相关资源
    最近更新 更多