2012-02-17 94 views
1

我写了使用restfb的facebook android应用程序。如何不像一个用户喜欢在facebook的帖子android

对于不像一个帖子,Facebook的图形API说要发送一个HTTP删除对https://graph.facebook.com/postid/likes 与访问令牌

的示例代码

String postURL = FacebookAppConstants.GRAPH_API_ACCESS+"/"+postID+ 
      "/likes&access_token="+FacebookAppConstants.accessToken; 

    Log.out(logFlag, logTag, "########Delete URL = "+postURL); 
    HttpDelete dislikePost = new HttpDelete(postURL); 
    Log.out(logFlag,logTag,"####Method : "+dislikePost.getMethod()); 


    try { 
     HttpResponse response = httpClient.execute(dislikePost); 

     Log.out(logFlag, logTag,response.getStatusLine().toString()); 


    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

在执行我从得到错误的请求400服务器。

HTTP/1.1 400 Bad Request 

    <HTML><HEAD> 
D/SMF  (2546): <TITLE>400 Bad Request</TITLE> 
D/SMF  (2546): </HEAD><BODY> 
D/SMF  (2546): <H1>Method Not Implemented</H1> 
D/SMF  (2546): Invalid method in request<P> 
D/SMF  (2546): </BODY></HTML> 

如何解决

任何帮助

感谢。

回答

1
String postURL = FacebookAppConstants.GRAPH_API_ACCESS+"/"+postID+ 
      "/likes&access_token="+FacebookAppConstants.accessToken; 

    Log.out(logFlag, logTag, "########Delete URL = "+postURL); 

    HttpGet dislikePost = new HttpGet(postURL+"&method=DELETE"); 


    try { 
     HttpResponse response = httpClient.execute(dislikePost); 
     HttpEntity entity = response.getEntity(); 
     String body = EntityUtils.toString(entity); 
     Log.out(logFlag, logTag, "Body : "+body);   

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
2

三件事来检查:

  1. 你有publish_streamextended permission该用户?
  2. 用户是否真的喜欢这篇文章?
  3. 中间是否有代理服务器,可能导致HTTP DELETE请求被删除?尝试通过一个GET请求,但加一个参数,&method=delete给你提出请求“伪造”一个DELETE请求 - Facebook的API将其视为“删除”,即使它到达一个GET请求

应该有回来的400错误的身体更好的错误信息 - 如果你提供我们或许可以帮助更多的

+0

是我有publish_stream扩展许可,并且用户是相同的谁喜欢的职位。我只看到400错误。如何打印错误日志的主体 – Abi 2012-02-17 10:08:39

+0

我得到了如何打印响应的主体。它在问题中更新。请求中无效的方法 – Abi 2012-02-17 10:28:48

+0

邮政编号是否正确?另外,我不是100%肯定的,但我不认为这种反应实际上是从Facebook回来的 - 我认为我没有看到来自graph.facebook.com的400个错误中的HTML - 是有一个中间的代理服务器可能导致HTTP DELETE请求被删除?尝试通过伪装GET请求来伪造DELETE请求,但添加参数'&method = delete' – Igy 2012-02-17 10:34:34