我正在尋找一種方式來返回我在loopJ AsyncHttpClient onFinish或onSuccess或onFailure中得到的響應。截至目前,我有這樣的一段代碼:Android - loopJ AsyncHttpClient返回響應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(「Exception」,「JSONException」+ e.toString()); Log.d(「onSuccess:」,jsonString);記錄它們處於同步狀態的值。
關於第二次調用: jObj = new JSONObject(jsonString);得到成功執行,我得到期望的方法返回值,因爲那時onSuccess方法已經將該值分配給變量jsonString。
現在我正在尋找的方法是防止提前從方法返回jObj。
有沒有辦法使getJSONObj方法,等待AsyncHttpClient任務的完成,將該變量分配給jsonString,創建JSONObject並返回它?
在此先感謝! 乾杯!
使用改造... – mapodev 2014-11-14 20:27:03
@ mapo87感謝您的早期答覆。我有一個關於改造的問題,它是否支持https post和持久性Cookie存儲? – Ganesh 2014-11-14 20:30:13
https:是,cookies:你需要設置它,但是是 – mapodev 2014-11-14 20:35:51