如何使用 Guzzle 发送 PUT 请求?
Posted
技术标签:
【中文标题】如何使用 Guzzle 发送 PUT 请求?【英文标题】:How can I use Guzzle to send a PUT request? 【发布时间】: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","详情":""
【问题讨论】:
【参考方案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 版本工作正常,也许它只接受表单数据。以上是关于如何使用 Guzzle 发送 PUT 请求?的主要内容,如果未能解决你的问题,请参考以下文章
利用Guzzle实现另一种PHP异步发送邮件(laravel5.4)