Skip to content

Commit 81ce21f

Browse files
committed
pass along headers on failures, too
1 parent 3a02c63 commit 81ce21f

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

src/com/loopj/android/http/AsyncHttpResponseHandler.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,21 @@ public void onFailure(Throwable error, String content) {
143143
protected void sendSuccessMessage(int statusCode, Header[] headers, String responseBody) {
144144
sendMessage(obtainMessage(SUCCESS_MESSAGE, new Object[]{new Integer(statusCode),headers, responseBody}));
145145
}
146-
146+
147147
protected void sendFailureMessage(Throwable e, String responseBody) {
148-
sendMessage(obtainMessage(FAILURE_MESSAGE, new Object[]{e, responseBody}));
148+
sendMessage(obtainMessage(FAILURE_MESSAGE, new Object[]{e, null, responseBody}));
149149
}
150-
150+
151+
protected void sendFailureMessage(Throwable e, Header[] headers, String responseBody) {
152+
sendMessage(obtainMessage(FAILURE_MESSAGE, new Object[]{e, headers, responseBody}));
153+
}
154+
155+
protected void sendFailureMessage(Throwable e, Header[] headers, byte[] responseBody) {
156+
sendMessage(obtainMessage(FAILURE_MESSAGE, new Object[]{e, headers, responseBody}));
157+
}
158+
151159
protected void sendFailureMessage(Throwable e, byte[] responseBody) {
152-
sendMessage(obtainMessage(FAILURE_MESSAGE, new Object[]{e, responseBody}));
160+
sendMessage(obtainMessage(FAILURE_MESSAGE, new Object[]{e, null, responseBody}));
153161
}
154162

155163
protected void sendStartMessage() {
@@ -169,7 +177,7 @@ protected void handleSuccessMessage(int statusCode, Header[] headers, String res
169177
onSuccess(statusCode, headers, responseBody);
170178
}
171179

172-
protected void handleFailureMessage(Throwable e, String responseBody) {
180+
protected void handleFailureMessage(Throwable e, Header [] headers, String responseBody) {
173181
onFailure(e, responseBody);
174182
}
175183

@@ -186,7 +194,7 @@ protected void handleMessage(Message msg) {
186194
break;
187195
case FAILURE_MESSAGE:
188196
response = (Object[])msg.obj;
189-
handleFailureMessage((Throwable)response[0], (String)response[1]);
197+
handleFailureMessage((Throwable)response[0], (Header[]) response[1], (String)response[2]);
190198
break;
191199
case START_MESSAGE:
192200
onStart();
@@ -229,13 +237,15 @@ void sendResponseMessage(HttpResponse response) {
229237
responseBody = EntityUtils.toString(entity, "UTF-8");
230238
}
231239
} catch(IOException e) {
232-
sendFailureMessage(e, (String) null);
240+
sendFailureMessage(e, response.getAllHeaders(), (String) null);
233241
}
234242

235243
if(status.getStatusCode() >= 300) {
236-
sendFailureMessage(new HttpResponseException(status.getStatusCode(), status.getReasonPhrase()), responseBody);
244+
sendFailureMessage(new HttpResponseException(
245+
status.getStatusCode(), status.getReasonPhrase()),
246+
response.getAllHeaders(), responseBody);
237247
} else {
238-
sendSuccessMessage(status.getStatusCode(),response.getAllHeaders(), responseBody);
248+
sendSuccessMessage(status.getStatusCode(), response.getAllHeaders(), responseBody);
239249
}
240250
}
241251
}

src/com/loopj/android/http/JsonHttpResponseHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ protected void sendSuccessMessage(int statusCode, Header[] headers, String respo
9898
Object jsonResponse = parseResponse(responseBody);
9999
sendMessage(obtainMessage(SUCCESS_JSON_MESSAGE, new Object[]{statusCode, headers, jsonResponse}));
100100
} catch(JSONException e) {
101-
sendFailureMessage(e, responseBody);
101+
sendFailureMessage(e, headers, responseBody);
102102
}
103103
}
104104

@@ -143,7 +143,7 @@ protected Object parseResponse(String responseBody) throws JSONException {
143143
}
144144

145145
@Override
146-
protected void handleFailureMessage(Throwable e, String responseBody) {
146+
protected void handleFailureMessage(Throwable e, Header[] headers, String responseBody) {
147147
try {
148148
if (responseBody != null) {
149149
Object jsonResponse = parseResponse(responseBody);

0 commit comments

Comments
 (0)