Android-解析Facebook图形请求响应

时间:2018-07-03 07:40:03

标签: android facebook facebook-graph-api

我在使用Facebook API解析图请求响应时遇到麻烦。

我的请求如下(其中pageID是我需要的Facebook页面的ID):

            GraphRequest request = GraphRequest.newGraphPathRequest(
                accessToken,
                "/PageID/feed",
                new GraphRequest.Callback() {
                    @Override
                    public void onCompleted(GraphResponse response) {
                        try {
                            JSONArray feedArray = response.getJSONObject().getJSONArray("data");
                            for(int i = 0; i < feedArray.length(); i++) {
                                JSONObject feedObj = (JSONObject) feedArray.get(i);

                                FeedItem item = new FeedItem();
                                item.setId(feedObj.getString("id"));
                                item.setMessage(feedObj.getString("message"));
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                });

        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,message,link,full_picture");
        request.setParameters(parameters);
        request.executeAsync();

但是,我的pb在注释行“ //在此处插入代码”的位置。 我按照androidhive上的教程进行操作,但是仍然遇到问题。

我的堆栈跟踪:

E/AndroidRuntime: FATAL EXCEPTION: main
          Process: com.apps.neandril.magic, PID: 29809
          java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String)' on a null object reference
              at com.apps.neandril.magic.WelcomeActivity$1.onCompleted(WelcomeActivity.java:135)
              at com.facebook.GraphRequest$5.run(GraphRequest.java:1368)
              at android.os.Handler.handleCallback(Handler.java:790)
              at android.os.Handler.dispatchMessage(Handler.java:99)
              at android.os.Looper.loop(Looper.java:164)
              at android.app.ActivityThread.main(ActivityThread.java:6494)
              at java.lang.reflect.Method.invoke(Native Method)
              at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

和空对象引用,请参考此行:

JSONArray feedArray = response.getJSONObject().getJSONArray("data");

如果您需要更多说明,请随时告诉我:)。

有人可以帮助我吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

for (int i = 0; i < data.length(); i++) {
    JSONObject feedObj = (JSONObject) data.get(i);
    FeedItem item = new FeedItem();
    item.setId(feedObj.getString("id"));
    item.setMessage(feedObj.getString("message"));
    feedItems.add(item);
}

您可以将数据输入到item中,并且所有提要都添加到feedItems中,因此您可以使用feedItems这样的"// insert your code here"