본문 바로가기

Android

DefaultHttpClient execute에서 redirect (code 302) 일 때 redirection 하는 방법 (redirect url에 "#"이 포함된 경우)

mHttpClient.setRedirectHandler(new DefaultRedirectHandler() {
@Override
public boolean isRedirectRequested(HttpResponse response, HttpContext context) {
boolean isRedirect = super.isRedirectRequested(response, context);
if (!isRedirect) {
int responseCode = response.getStatusLine().getStatusCode();
if (responseCode == 301 || responseCode == 302) {
return true;
}
}
return isRedirect;
}
@Override
public URI getLocationURI(HttpResponse response, HttpContext context) throws ProtocolException {
int responseCode = response.getStatusLine().getStatusCode();
if (responseCode == 301 || responseCode == 302) {
Log.l(response.getLastHeader("Location").getValue());
String redirectStr = response.getLastHeader("Location").getValue();
if (response.getLastHeader("Location").getValue().contains("#")) {
mIs302Redirection = true;
String[] redirectUrl = redirectStr.split("#");
Log.l(redirectUrl[0]);
mAddResultData = redirectUrl[1];
return URI.create(redirectUrl[0]);
}
}
return super.getLocationURI(response, context);
}
});