如何在CURL php中使用DELETE和PUT命令



我正在发送一个DELETE请求到快速blox API的自定义对象类。但它没有删除记录。我使用CURL php发送请求。下面是我的代码:

$url =" https://api.quickblox.com/data/TopPlace/50e3d8db535c123833015181.json" 
$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

但执行此命令后,它不删除数据。我回显$status,它显示了422个代码

您将获得422状态码。你查过了吗?

引自维基百科:

4xx类状态码用于客户端似乎出错的情况。除了响应HEAD请求外,服务器应该包含一个实体,其中包含对错误情况的解释,以及它是临时的还是永久的条件。这些状态码适用于任何请求方法。用户代理应该向用户显示任何包含的实体。

特别是对于422:

422 Unprocessable Entity (WebDAV;RFC 4918):请求格式良好,但由于语义错误而无法执行。

RFC 4918给出了更多细节:

422(不可处理的实体)状态码意味着服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态码是不合适的),并且请求实体的语法是正确的(因此400(坏请求)状态码是不合适的),但无法处理包含的指令。例如,如果XML请求体包含格式良好(即语法正确)但语义错误的XML指令,则可能发生此错误情况。

所以答案很可能是您的$data的内容不是服务器所期望的。

还要确保检查QuickBlox API中可能的API错误代码的文档:

  • http://quickblox.com/developers/Errors Errors_Unprocessable_Entity

既然你说错误是

{"errors":{"base":["Forbidden. Need user."]} 

我天真的假设是您在使用服务之前忘记进行身份验证了。

为了使用QuickBlox api,你必须创建会话。然后,您将在QuickBlox环境中拥有READ访问权限。

为了创建/更新/删除记录,您必须登录并代表用户操作。

所以,有两种方法:

    使用用户参数创建会话
  • 创建会话并登录

还要注意,您只能删除自己的对象,而不能删除其他用户的对象。

最新更新