Я пытаюсь получить ответ со списком пользователей json из github api.
Может ли кто-нибудь сказать мне причину, по которой путь выполнения кода не достигает переопределенных методов 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(...) выполняется переход вправо к return content.
Есть идеи о причине этого? Что я делаю не так?
Был бы признателен за любой совет.
EDIT: ТАК правильный способ сделать это — работать с ответом в методе 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()? Что является предварительным условием?