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

时间:2013-01-03 09:58:16

标签: php curl quickblox

我正在向自定义对象类的Quick blox API发送DELETE请求。但它没有删除记录。我正在使用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代码。

2 个答案:

答案 0 :(得分:3)

您将获得422状态代码。你看起来了吗?

Quoting from Wikipedia:

  

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

特别是422:

  

422 Unprocessable Entity(WebDAV; RFC 4918):请求格式正确,但由于语义错误而无法遵循。

RFC 4918提供了更多详细信息:

  

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

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

另请务必查看documentation for Possible API Error Codes in that QuickBlox API

由于您声明错误是

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

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

答案 1 :(得分:0)

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

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

所以,有两种方法:

另外,请注意您可以删除自己的对象,而不是其他用户的对象。