我试图在我的Android应用程序中使用AQuery
进行FQL查询。在第一个FQL查询中我得到了JSON
正常,但是当我滚动我的列表以获得更多帖子(使用created_time比较调用另一个方法)时,我遇到了网络错误,并且JSON
为空
如果我在我的浏览器中测试网址,它会正确运行并返回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();
}
}
});
}
答案 0 :(得分:0)
尝试复制网址并粘贴到浏览器中,看看响应是什么。
或者使用String.class作为第二次调用的类型,并打印出对debug的响应。
url最有可能导致结果为无效的json类型。
答案 1 :(得分: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();
}
}