【问题标题】:Why does this PHP Curl PUT Request returns Code 500?为什么这个 PHP Curl PUT 请求返回代码 500?
【发布时间】: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 curl put http-status-code-500


【解决方案1】:

好吧,这比我预期的要快。今天应该早点问。

我之前尝试过 Curlfile,但看起来我做错了什么。

Barmer 的评论有助于: https://www.php.net/manual/en/class.curlfile.php

谢谢^^

【讨论】:

    猜你喜欢
    • 2017-11-25
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多