java - 为什么我在尝试删除 Facebook 测试用户时收到 "Method Not Implemented"错误

标签 java facebook https

我正在使用 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 进行 POST 和 GET 工作正常,只是发送 DELETE 才是问题所在。同时,我还可以使用 Python 脚本、curl 和 Firefox REST 客户端扩展来实现 DELETE(对于相同的用户和访问 token )。

有谁知道该错误意味着什么,或者在将 DefaultHttpClient 与 Facebook Graph API 一起使用时是否存在任何已知问题/陷阱?

更新:我已尝试按照 Peter 在评论中的建议使用 tcpdump 分析不同的请求: sudo tcpdump -i eth2

但我看到的只是我和 Facebook 之间来回传输的数据包,这似乎是诊断问题的一种低级方法。

最佳答案

Facebook 似乎不想接受带有内容的 DELETE 请求,并且出于某种原因,DefaultHttpClient(和 HttpUrlConnection,我也尝试过)要么不设置内容长度 header ,要么将其设置为正值。我发现的修复方法是将内容长度 header 手动设置为零。例如:

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


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

关于java - 为什么我在尝试删除 Facebook 测试用户时收到 "Method Not Implemented"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4933780/

相关文章:

ssl - NGINX 重定向到 HTTPS 仅在刷新后有效

java - 将新对象添加到数组列表

java - 我可以在不请求该 JVM 的情况下从另一个 JVM 的内存访问对象吗?

java - 在Eclipse中向JFrame添加控件时如何自动为变量添加final关键字?

ios - FBSDKLoginManager logInWithPublishPermissions 总是返回 isCancelled=YES

ios - 无法分享到 Facebook 的链接

java - 尝试从另一个类在 MainActivity 中创建实例时出现问题

android - 运行包含大量代码的应用程序

qt - QNetworkReply::UnknownNetworkError 来自 QNetworkAccessManager::get 当使用密码保护的代理服务器请求 https 时

.htaccess - htaccess mod_rewrite : Force using https, 但不在子域上