Android 使用HTTP POST/DELETE方法时Facebook Graph API请求错误

Android 使用HTTP POST/DELETE方法时Facebook Graph API请求错误,android,facebook,facebook-graph-api,nullpointerexception,facebook-like,Android,Facebook,Facebook Graph Api,Nullpointerexception,Facebook Like,我正在开发一个Android应用程序,它与Facebook SDK集成 首先,我使用GraphAPI获取Facebook页面的提要,这很好。我想让用户喜欢并对每个提要发表评论 我使用下面的代码片段来表示类似的 Bundle parameters = new Bundle(); parameters.putString("access_token", access_token); String response = null; String id = <Target Feed ID

我正在开发一个Android应用程序,它与Facebook SDK集成

首先,我使用GraphAPI获取Facebook页面的提要,这很好。我想让用户喜欢并对每个提要发表评论

我使用下面的代码片段来表示类似的

Bundle parameters = new Bundle();
parameters.putString("access_token", access_token);

String response = null;
    String id = <Target Feed ID>;
    try {
        response = facebook.request(id+"/likes", parameters, "POST");
    } catch (MalformedURLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
        Log.i("FB Like Output", ""+response);
请注意,只有当我使用“POST”或“DELETE”作为第三个参数时,才会发生此错误。相反,如果我使用GET,我会得到正确的响应(但是,这不符合我的目的)

此外,我还添加了相关权限,如发布流

这是使用HTTP POST方法发出同步请求的正确语法吗

04-25 16:29:08.332: E/AndroidRuntime(710): FATAL EXCEPTION: main
04-25 16:29:08.332: E/AndroidRuntime(710): java.lang.NullPointerException
04-25 16:29:08.332: E/AndroidRuntime(710):  at java.net.URLDecoder.decode(URLDecoder.java:130)
04-25 16:29:08.332: E/AndroidRuntime(710):  at java.net.URLDecoder.decode(URLDecoder.java:68)
04-25 16:29:08.332: E/AndroidRuntime(710):  at com.facebook.android.Util.openUrl(Util.java:186)
04-25 16:29:08.332: E/AndroidRuntime(710):  at com.facebook.android.Facebook.requestImpl(Facebook.java:806)
04-25 16:29:08.332: E/AndroidRuntime(710):  at com.facebook.android.Facebook.request(Facebook.java:794)
04-25 16:29:08.332: E/AndroidRuntime(710):  at com.test.myapp.adapters.FacebookAdapter$1.onClick(FacebookAdapter.java:107)
04-25 16:29:08.332: E/AndroidRuntime(710):  at android.view.View.performClick(View.java:2408)
04-25 16:29:08.332: E/AndroidRuntime(710):  at android.view.View$PerformClick.run(View.java:8816)
04-25 16:29:08.332: E/AndroidRuntime(710):  at android.os.Handler.handleCallback(Handler.java:587)
04-25 16:29:08.332: E/AndroidRuntime(710):  at android.os.Handler.dispatchMessage(Handler.java:92)
04-25 16:29:08.332: E/AndroidRuntime(710):  at android.os.Looper.loop(Looper.java:123)
04-25 16:29:08.332: E/AndroidRuntime(710):  at android.app.ActivityThread.main(ActivityThread.java:4627)
04-25 16:29:08.332: E/AndroidRuntime(710):  at java.lang.reflect.Method.invokeNative(Native Method)
04-25 16:29:08.332: E/AndroidRuntime(710):  at java.lang.reflect.Method.invoke(Method.java:521)
04-25 16:29:08.332: E/AndroidRuntime(710):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-25 16:29:08.332: E/AndroidRuntime(710):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-25 16:29:08.332: E/AndroidRuntime(710):  at dalvik.system.NativeStart.main(Native Method)
如图所示

喜欢给定对象(如果它有/likes连接

而您无法在上找到/喜欢的连接

你不能喜欢扇形页面,而代码会导致问题

 String id = <Facebook Page ID>;
stringid=;

我可以使用Graph API Explorer工具发出POST请求,以喜欢来自此特定页面的任何提要。因此,在本例中,这可能不是问题no,我指的是您的代码“String id=;”表示您正在执行“喜欢页面”,而不是“喜欢页面的提要”。应为“String id=”此NPE发生在请求发出之前。您应该从发出请求的位置运行调试器,并确保传递到openUrl中的内容不为null。@李明运行了调试器,但当时未找到任何传递的null值……此外,当我使用GET作为第三个参数时,不会发生此异常……这是使用POST发出同步请求的正确语法吗?您从哪里获取访问令牌当您调用parameters.putString(“access\u token”,access\u token)时?在NPE中,Util.java:186是当代码尝试对访问令牌进行url解码时,这就是它获取空指针的地方。我在登录后获取访问令牌,并将其存储在共享首选项中,如下所示:SharedPreferences.Editor=mPrefs.edit();字符串access_token=facebook.getAccessToken();putString(“访问令牌”,访问令牌);commit();此后,我将从共享首选项中检索它。我运行了调试器,发现它不是空的。奇怪的是,当我将“POST”替换为“GET”时,我没有使用NPE。如果有空值,则不管该值是多少(第三个参数)。
 String id = <Facebook Page ID>;