Я ищу способ вернуть ответ, который я получаю в loopJ AsyncHttpClient onFinish или onSuccess или onFailure. В настоящее время у меня есть этот кусок кода:Android - loopJ AsyncHttpClient return response onFinish или onSuccess
**jsonParse.java file**
public class jsonParse {
static JSONObject jObj = null;
static String jsonString = "";
AsyncHttpClient client;
public JSONObject getJSONObj() {
RequestParams params;
params = new RequestParams();
params.add("username", "user");
params.add("password", "password");
client = new AsyncHttpClient();
client.post("http://example.com", params, new TextHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, String response) {
jsonString = response;
Log.d("onSuccess: ", jsonString);
}
@Override
public void onFailure(int statusCode, Header[] headers, String response, Throwable e) {
if (statusCode == 401) {
jsonString = response;
Log.d("onFailure: ", jsonString);
}
}
});
try {
jObj = new JSONObject(jsonString);
} catch (JSONException e) {
Log.e("Exception", "JSONException " + e.toString());
}
return jObj;
}
}
Когда я вызываю код:
JSONParser jsonParser = new JSONParser();
jsonParser.getJSONFromUrl();
я получаю JSONException перед OnSuccess или метод OnFailure заканчивает HTTP POST.
Я заметил, что при первом вызове: Log.e («Исключение», «JSONException» + e.toString()); регистрируется, а затем Log.d («onSuccess:», jsonString); регистрирует значение, поскольку оно находится в состоянии синхронизации.
Во втором вызове: jObj = новый JSONObject (jsonString); успешно выполняется, и я получаю желаемое возвращаемое значение для метода, потому что к этому времени метод onSuccess уже присвоил значение переменной jsonString.
Теперь то, что я точно ищу, является способом предотвратить преждевременно возврат jObj из метода.
Есть ли способ сделать getJSONObj, дождаться завершения задачи AsyncHttpClient, назначить переменную в jsonString, создать JSONObject и вернуть его?
Заранее благодарен! Приветствия!
использование retrofit ... – mapodev
@ mapo87 спасибо за ранний ответ. У меня вопрос о дооснащении, поддерживает ли он https-пост и постоянный Cookie Store? – Ganesh
https: yes, cookies: вам нужно установить это, но да – mapodev