【发布时间】:2020-08-08 18:05:17
【问题描述】:
我尝试通过 Curl (PHP) 连接以下 API:https://wiki.vg/Mojang_API#Example
我成功处理了其他 CURL 请求,只是 PUT 请求不起作用。
我正在研究 XAMPP,但我也在我的服务器上尝试了代码,结果相同。以下 Curl 命令在本地和我的服务器上就像一个魅力:
curl -X PUT -H "Authorization: Bearer [authtoken]" -F model=alex -F file="@test.png;type=image/png" https://api.mojang.com/user/profile/32143e660e624cd8b05b889f0af49e39/skin -i
但是,如果我尝试将其转换为 PHP,则会收到错误 400 或 500。我整天浏览其他线程而没有任何结果。这是未经我尝试的所有其他测试的原始代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
$post = array(
'model' => 'alex',
'file' => '\"@test.png;type=image/png\"'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$headers = array(
$this->accessToken
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
var_dump(curl_getinfo($ch, CURLINFO_HTTP_CODE));
curl_close($ch);
一些进一步的说明:
- 是的,我确定 Curl 已安装,因为其他 API 请求有效
- 是的,我确定身份验证令牌有效,它适用于其他请求
- 我识别出负载请求文件作为原始图像文件数据,我提取了 png 名称 - 不确定这是否应该工作
【问题讨论】:
-
这不是上传文件的正确方法。见php.net/manual/en/class.curlfile.php
-
虽然我不确定这是否是使用 PUT 的正确方法,但也许它只适用于 POST。
标签: php curl put http-status-code-500