好的,这是我的问题。
我正在进行 FQL 查询并存储响应数据。我的代码运行良好,除了应用程序运行大约 4 分钟后,我得到一个 JSONException。异常读取
A JSONArray text must start with '[' at character 0 of
这很奇怪,因为如果我在浏览器中输入查询的 URL,我会得到以下信息
[{"uid":SOMENUMBER},{"uid":SOMENUMBER}]
这显然以“[”字符开头。
这是请求
String query = "SELECT uid FROM user WHERE is_app_user=1 and uid IN (SELECT uid2 FROM friend WHERE uid1 =" + fbId + ")";
Bundle params = new Bundle();
params.putString("method", "fql.query");
params.putString("query", query);
mAsyncFacebookRunner.request(null, params, new FQLRequestListener());
这是请求监听器
private class FQLRequestListener implements RequestListener
{
@Override
public void onComplete(String response, Object state)
{
try {
JSONArray json = new JSONArray(response);
friendsIds = new ArrayList<String>();
for(int i = 0; i < json.length(); ++i)
{
String uid = json.getJSONObject(i).getString("uid");
friendsIds.add(uid);
Log.d("friends", friendsIds.get(i));
}
InviteFriends.this.runOnUiThread(new Runnable()
{
@Override
public void run()
{
setUpList();
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
还有堆栈..
06-15 16:43:21.744: D/Facebook-Util(866): GET URL: THIS IS THE URL THAT WORKS IN A BROSWER (actual URL removed)
06-15 16:43:21.774: W/System.err(866): org.json.JSONException: A JSONArray text must start with '[' at character 0 of
06-15 16:43:21.774: W/System.err(866): at org.json.JSONTokener.syntaxError(JSONTokener.java:448)
06-15 16:43:21.774: W/System.err(866): at org.json.JSONArray.<init>(JSONArray.java:104)
06-15 16:43:21.774: W/System.err(866): at org.json.JSONArray.<init>(JSONArray.java:150)
06-15 16:43:21.774: W/System.err(866): at rageup.android.InviteFriends$FQLRequestListener.onComplete(InviteFriends.java:129)
06-15 16:43:21.774: W/System.err(866): at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:254)
我应该注意到..
当我注销并重新登录时查询有效。
我已确保我的 Facebook 会话有效。
Facebook 提供的“Hackbook”示例在下载朋友列表时也存在同样的问题。
获取异常的流程
用户登录的主页
用户单击按钮开始第二个活动
第二个活动是进行查询的地方
回家
大约 4 分钟后重复,减去登录