我試圖從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