我试图从github api获取用户json列表的响应。使用AsyncHttpClient获取包含Github用户列表的JSON响应
谁能告诉我为什么代码执行路径没有达到重写的方法onFailure处()和的onSuccess?
public String getResponse()
{
AsyncHttpClient client=new AsyncHttpClient();
RequestParams params=new RequestParams();
params.put("since","0");
client.get("https://api.github.com/users", params, new AsyncHttpResponseHandler() {
@Override
public void onFailure(int arg0, Header[] arg1, byte[] arg2,
Throwable arg3) {
userList.clear();
userList.addFirst("Items didn't load properly");
}
@Override
public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
try {
content = new String(arg2, "UTF-8");
//content is json response that can be parsed.
} catch (UnsupportedEncodingException e1) {
userList.clear();
userList.add("Some encoding problems occured");
e1.printStackTrace();
}
}
});
return content;
}
这些方法由于某种原因而被忽略。在client.get(...)它跳到返回内容。
有关它的原因的任何想法?我究竟做错了什么?
将不胜感激任何意见。
编辑: 所以正确的方法是做到这一点是与的onSuccess(...)方法中的响应操作?
@Override
public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
try {
content = new String(arg2, "UTF-8");
//content is json response that can be parsed.
parseResponseAmount(content, 10); //operate with response
} catch (UnsupportedEncodingException e1) {
userList.clear();
userList.add("Some encoding problems occured");
e1.printStackTrace();
}
}
我尝试从样反应解析信息:
private void parseResponseAmount (String response, int amount)
{
try {
JSONArray readerArray = new JSONArray(response);
for (int i = 0; i < amount; i++)
{
JSONObject userObject = (JSONObject) readerArray.get(i);
String login = userObject.getString("login");
getUserList().add(login);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
getUserList().clear();
getUserList().add("Failed to parse response");
e.printStackTrace();
}
}
但代码仍然无法正常工作。在事件驱动的开发中,它是由鼠标移动,按键等引起的。什么导致这些onSuccess()和onFailure()发生?什么是先决条件?
感谢您的回答!当你在不阅读文档的情况下使用新库时会发生什么......据我所知,正确的方法是在** onSuccess()方法中处理响应。你能检查编辑过的文章吗? – AnZyuZya 2014-11-07 12:36:56
更新了我的答案。 – 2014-11-07 14:20:08
是的,'getResponse()'现在不返回值。是的,要显示数据我使用适配器和'mAdapter.notifyDataSetChanged()'。 ListView的内容在pull(拉到刷新列表)上更新。但有趣的是,第一次拉什么都没有发生,因此'onFailure()'或'onSuccess'没有被调用。但是,接下来的每一次我都会从'onFailure()'方法中得到一个错误 – AnZyuZya 2014-11-07 14:31:03