有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我在尝试删除Facebook测试用户时会出现“方法未实现”错误

我正在使用Apache提供的Java DefaultHttpClient来删除一个测试用户,我们已经通过这里描述的/app_id/accounts/test users端点注册了该测试用户http://developers.facebook.com/docs/test_users/

返回的响应是以下HTML:

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

使用DefaultHttpClient发布并访问测试用户api工作正常,问题在于发送删除。同时,我还可以使用Python脚本、curl和Firefox REST客户端扩展来实现删除(对于相同的用户和访问令牌)

有人知道这个错误意味着什么,或者在Facebook Graph API中使用DefaultHttpClient时是否存在任何已知问题/陷阱吗

更新:正如Peter在评论中建议的那样,我尝试使用tcpdump分析不同的请求: sudo tcpdump-i eth2

但我看到的只是我和Facebook之间来回的信息包,这似乎是一种低层次的诊断问题的方法


共 (1) 个答案

  1. # 1 楼答案

    Facebook似乎不想接受包含内容的删除请求,无论出于何种原因,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");