我遇到了 AsyncHttpClient 的问题,因为它在某些情况下会响应,在某些情况下也不会。当我在下面运行这个函数时,我没有数据,并且在 logcat 中我可以看到以下Warining:
JsonHttpResponseHandler﹕ onSuccess(int, Header[], JSONArray) was not overriden, but callback was received
以下是我的功能代码:
private void getTreningPlan() {
RequestParams params = new RequestParams();
params.put("userId", user.getUserId());
invokeWS(params);
}
private void invokeWS(RequestParams params) {
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://" + Constants.address + ":" + Constants.port + "/silownia_java/rest/plan/plansByID", params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject obj) {
Log.i("TAG", "HERE");
try {
TrainingPlan trainingPlan = new TrainingPlan();
ArrayList<TrainingDay> trainingDayArrayList = new ArrayList<TrainingDay>();
JSONArray trainingDays = obj.getJSONArray("trainingDays");
(...............)
} catch (Exception e) {
Toast.makeText(getActivity(), "Niepoprawna odpowiedź serwera", Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
if (statusCode == 404) {
Toast.makeText(getActivity(), "404 - Nie odnaleziono serwera!", Toast.LENGTH_LONG).show();
} else if (statusCode == 500) {
Toast.makeText(getActivity(), "500 - Coś poszło nie tak po stronie serwera!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getActivity(), throwable.toString(), Toast.LENGTH_LONG).show();
Log.i(TAG, throwable.toString());
}
}
});
}
我不知道,为什么会这样,因为我在项目的某些情况下使用 AsyncHttpClient 并且它总是表现良好。 我可以补充说,我的应用程序与我的服务器有连接,而在服务器端,这个http响应很好。
答案 0 :(得分:1)
当http响应是JSONObject但是当响应是JSONArray时,它可以解决这个问题。确保在使用
时返回JSONObject @Override
public void onSuccess(int statusCode, Header[] headers, JSONObject obj) {
}
/////////////////////////////////////////////// //////////////////// 如果返回JSON数组那么
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray jsonArray) {
}