禁止Android中Get请求的重定向,获得重定向后的链接URL。
/**
* 进行第一次网络请求,获取重定向下载APK的地址
* @return
*/
public String getLocation() {
String url = null;
try {
HttpGet get = new HttpGet(requestUrl);
get.addHeader("Range", "bytes=0-");
get.addHeader("User-Agent", "HalleyService/2.0");
get.addHeader("Connection", "Keep-Alive");
get.addHeader("Accept-Encoding", "gzip");
// HttpResponse httpResponse = new DefaultHttpClient()
// .execute(get);
DefaultHttpClient loginClient = new DefaultHttpClient();
RedirectHandler redirectHandler = new RedirectHandler();
loginClient.setRedirectHandler(redirectHandler);//关闭重定向
HttpResponse httpResponse = loginClient.execute(get);
Header locationHeader = httpResponse.getFirstHeader("Location");
url = locationHeader.getValue();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return url;
}
上述代码中的RedirectHandler类代码如下:
import org.apache.http.HttpResponse;
import org.apache.http.impl.client.DefaultRedirectHandler;
import org.apache.http.protocol.HttpContext;
public class RedirectHandler extends DefaultRedirectHandler {
@Override
public boolean isRedirectRequested(HttpResponse response,
HttpContext context) {
// TODO Auto-generated method stub
return false;
}
}