我正在使用library为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
论证。
答案 0 :(得分:1)
每次必须@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...
}
}