为什么此PHP Curl PUT请求返回代码500?

时间:2020-08-08 18:05:17

标签: php curl put http-status-code-500

我尝试通过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请求可以正常工作
  • 是的,我确定auth令牌有效,它可以在其他请求中使用
  • 我认识到有效载荷将文件请求为原始图像文件数据,然后拉过png名称-不知道这是否应该工作

1 个答案:

答案 0 :(得分:0)

确定的速度比我预期的要快。今天应该问更容易的。

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

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

谢谢^^