2011-02-08 40 views
2

我正在使用Apache提供的Java DefaultHttpClient發出刪除我們通過/ app_id /賬戶/測試用戶的終結點這裏描述http://developers.facebook.com/docs/test_users/爲什麼在嘗試刪除Facebook測試用戶時收到「方法未實現」錯誤

返回的響應是以下HTML:

<HTML><HEAD> 
<TITLE>400 Bad Request</TITLE> 
</HEAD><BODY> 
<H1>Method Not Implemented</H1> 
Invalid method in request<P> 
</BODY></HTML> 

使用DefaultHttpClient到POST和GET到測試用戶API工作正常,它只是發送刪除這是問題。同時,我還可以使用Python腳本,通過curl和使用Firefox REST客戶端擴展來實現DELETE(對於相同的用戶和訪問令牌)。

有沒有人知道這個錯誤意味着什麼,或者在Facebook Graph API中使用DefaultHttpClient時是否有任何已知的問題/陷阱?

更新:我試着分析使用tcpdump命令請求別共由彼得在評論中建議: 須藤tcpdump的-i ETH2

但所有我看到的是我的包和Facebook之間來回,它似乎這是診斷問題的一種低級方法。

+1

我會使用tcpdump的/ WinDump的看到Python的要求和Java的要求有何不同。 – 2011-02-08 13:50:37

回答

5

看起來Facebook並不想接受帶有內容的DELETE請求,並且無論出於何種原因,DefaultHttpClient(和HttpUrlConnection,我也試過)要麼不設置內容長度標題,要麼設置爲正值。我發現的修復方法是手動將內容長度標頭設置爲零。例如:

HttpDelete deleteMethod = new HttpDelete(url); 
deleteMethod.setHeader("Content-Length", "0"); 


HttpResponse httpResponse = client.execute(deleteMethod); 
String responseContent = EntityUtils.toString(httpResponse.getEntity(),"UTF-8"); 
相關問題