我使用android库来做我的应用程序和我的网站之间的HTTP通信。对于库,它允许你创建一个静态类,然后可以在整个应用程序中调用。
当你调用静态类方法时会发生什么,基本上你只是传递你的参数给它,它做剩下的(很明显)。其中一个参数是AsyncHttpResponseHandler
,它允许您覆盖方法并处理正在运行的AsyncTask的不同部分。
一样:
类内部的静态方法
public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.get(getAbsoluteUrl(url, false), params, responseHandler);
}
然后在调用该方法时(例如):
TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
// If the response is JSONObject instead of expected JSONArray
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Pull out the first event on the public timeline
JSONObject firstEvent = timeline.get(0);
String tweetText = firstEvent.getString("text");
// Do something with the response
System.out.println(tweetText);
}
});
您可以覆盖的方法之一是onFailure()
。
我想知道的是,是否有一种方法可以为onFailure()
覆盖设置"默认"?我想让它设置相同的每次我调用get(url, params, responseHandler)
方法,而不必每次重新声明它,但我不知道设置它的任何方式,同时仍然考虑到传递的AsyncHttpResponseHandler
参数。
您必须每次使用@Override onFailure()
来告诉每个单独的请求是否必须(或不)执行onFailure
成功。
你能做的是创建一个实用程序方法/类来处理所有onFailure()
请求。
例子:
TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
// other methods overrides
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
FailureClass.handlerMethod(statusCode, headers, responseBody, error);
}
}
class FailureClass {
public static handlerMethod(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
// do the common stuff, redirect or what you want...
}
}