2013-01-03 74 views
-1

我正在向自定義對象類的Quick blox API發送DELETE請求。但不刪除記錄。我使用CURL php發送請求。 這裏是我的代碼:如何在CURL php中使用DELETE AND PUT命令?

$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); 

但在執行此命令後,它不會刪除數據。我回顯$狀態它顯示我422代碼。

+0

你能告訴我們你的'$ data'是 – Teneff

+0

我的數據是: $ data = placename = london&total = 2 我在quickblox管理面板中創建了一個自定義對象類。 placename和total是該類中的自定義變量名稱。 – hitender

+0

http://quickblox.com/developers/Custom_Objects上的例子說你需要包含QB-Token – Gordon

回答

3

您將得到422狀態碼。你看這個了嗎?

Quoting from Wikipedia:

的4XX類的狀態代碼是用於在客戶端似乎有錯誤的案件。除了響應HEAD請求外,服務器應該包含一個包含錯誤情況說明的實體,以及它是臨時還是永久狀態。這些狀態碼適用於任何請求方法。用戶代理應該向用戶顯示任何包含的實體。

而對於422具體表現在:

422無法處理的實體管理(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."]} 

我天真的假設是你忘了在使用服務前進行身份驗證。

+0

我從快速blox響應得到錯誤: {「errors」:{「base」:[「Forbidden。Need user。」]} – hitender

+1

@hitender是嗎?添加一個用戶到你的$數據。 – Gordon

+0

我在發送數據之前進行了身份驗證。我得到了會話令牌,並且還在請求中傳遞了令牌。 – hitender

0

爲了使用QuickBlox API,您必須創建會話。然後,您將在QuickBlox環境中具有讀權限。

爲了創建/更新/刪除記錄您必須登錄並以用戶名義行事。

所以,有2種方式:

此外,要知道,你可以刪除自己的對象,而不是其他用戶的對象。

+0

非常感謝!您是對的,我們需要登錄用戶API(http://api.quickblox.com/login.json)將其會話從API應用程序級別升級到API用戶級別,然後允許刪除和創建數據。 我現在解決了我的問題,並能夠刪除和創建數據。 再次感謝! 我現在關閉它。 – hitender