laravel - 使用 Guzzle 发布表单数据总是返回 404
问题描述
我很难使用 Guzzle 发送简单的多部分表单请求。出于某种原因,我总是收到 404 响应,但我使用 cURL 发出相同的请求,我得到 200 ok 并发布了数据。
即使解决了类似的问题,我似乎也无法弄清楚问题所在。
这是我的卷曲代码:
$body = shell_exec('curl -H \'Content-Type: multipart/form-data\' -H \'Accept: application/json\' \
-F "photo=@ "'.$photo.'" \
-F "api_key="'.$apiKey.'" \
-F "id=14784" \
"'.$apiUrl.'" 2>&1 > /dev/null 2>&1 &');
shell 在命令行中运行良好,但我需要将其转换为从控制器发出请求,所以我已将表单字段添加到 Guzzle,但没有得到 404。
这是 Guzzle 代码:
$guzzle = $client->request('POST', config('services.url'), [
'multipart' => [
['headers' => [
'Content-Type: multipart/form-data',
'Accept: application/json'
],
'name' => 'api_key',
'contents' => config('services.key'),
],
[
'name' => 'photo',
'contents' => $photo
],
[
'name' => 'id',
'contents' => "4084",
],
]
]);
为了发帖,我已经更改了网址,但我正在努力寻找原因,所以如果有人知道,请给我一个提示!
** 编辑 ** 我已经能够通过 404 但我没有收到 500 错误,不确定它是表单还是收件人服务器,因为我可以使用 Postman 成功向同一端点发出 POST 请求。
还是一头雾水。
解决方案
有 2 个错误第一次你设置了 base_uri 然后你再次调用它
第二个错误
正如你提到的,你将使用多部分
你应该使用multipart
notform_params
并且你不需要请求部分的 json 选项
标题更改为此Content-Type' => multipart/form-data
因此请求应该是这样的
$response = $client->post('/', [
'multipart' => $params,
]);
参考可以在这里看到多部分
推荐阅读
- macos - 如何在 OSX 上复制使用 grep 找到的文件
- c - 如何将 SHA1 返回值转换为 ascii
- java - psql:在 Eclipse 中运行 bash 脚本时找不到命令
- javascript - 如何删除一个
- 来自带有 javascript 的列表
- connection - Conda 安装失败并显示 CONNECTION FAILED 消息
- reactjs - 在 componentDidMount 中初始化脚本 - 运行每个路由更改
- r - 使用 tidyverse 循环所有行并仅识别(并保留)较高的值
- c++ - 将 cv::Mat 存储在 Swift 变量中
- graph - 如何在 Pygal 中预先知道条数?
- c# - 有没有办法在标准消息框中添加“不再询问”复选框?