1

我试图在我的 android 应用程序中使用AQuery. 在第一个 FQL 查询中,我得到了JSON正常的结果,但是当我滚动列表以获取更多帖子(使用 created_time 比较调用另一种方法)时,我得到一个网络错误 e aquery 并且JSON为空。

如果我在浏览器中测试 url,它会正确运行并返回 json 数据,但是当我使用 android 运行时,我会收到此网络错误并且 json 为空。

任何人都可以给我帮助吗?

这是我滚动时调用的方法:

public void callJsonNext(){

    progress_bottom.setVisibility(View.VISIBLE);

    final AQuery aq = new AQuery(getActivity());

    String URL = URL_postagens_passadas + created_time_olds + "limit%2010&access_token=" + access_token;

    Log.d("URL_CALL_JSON_NEXT", URL);

    aq.ajax(URL, JSONObject.class, new AjaxCallback<JSONObject>() {


        @Override
        public void callback(String url, JSONObject json, AjaxStatus status) {

            Log.d("STATUS_NEXT", status.toString());

                if(json != null){

                    fillArrayWithOlderPosts(json);

                }else{      
                 Toast.makeText(aq.getContext(), "Error:" + status.getCode() + " in Json Next" + status.getError() + status.getMessage() + status.getSource(), Toast.LENGTH_LONG).show();
                 Toast.makeText(aq.getContext(), "Error:" + status.getCode() + " in Json Next" + status.getError() + status.getMessage() + status.getSource(), Toast.LENGTH_LONG).show();
                }
        }
});

}
4

2 回答 2

0

尝试复制网址并粘贴到浏览器中,看看有什么反应。

或者使用 String.class 作为第二次调用的类型并打印出调试响应。

url 很可能有问题,导致结果是无效的 json 类型。

于 2014-03-11T03:09:15.630 回答
0

我只是使用下面的代码,并且效果很好。:)

如果您使用他们自己的请求方法,Facebook 只允许使用 created_time 的 fql 请求。

public void callJsonPrevious(){

        if ((!created_time_news.equals("") && created_time_news != null)){
        progress_top_top.setVisibility(View.VISIBLE);

        String query = "select post_id, created_time, updated_time, attachment, share_count,like_info, message,likes from stream where source_id=351126731639471 and actor_id=351126731639471 and created_time >" + created_time_news;
            Bundle params = new Bundle();
            params.putString("q", query);
            params.putString("access_token", access_token);
            Session session = Session.getActiveSession();
            Request request = new Request(session,
                "/fql",                         
                params,                         
                HttpMethod.GET,                 
                new Request.Callback(){         
                    public void onCompleted(Response response) {
                        JSONObject json;
                        json = new JSONObject();
                        json = response.getGraphObject().getInnerJSONObject();
                        fillArrayWithNewPosts(json);
                    }                  
            }); 
            Request.executeBatchAsync(request); 
        }else{

            getFirstPosts();

        }
    }
于 2014-03-24T11:28:14.803 回答