网上关于用HttpClient处理重定向的文章很多,但是我测了以后,基本都不能用,因为在我这不管有没重定向,状态码全部返回200,拿到的数据都是重定向后的,就是说HttpClient自动帮我们处理了重定向,可能跟HttpClient的版本有关,我的版本是4.1。 下面是HttpClient 4.1可用的,检测重定向的方法:
String url = "http://www.javaeye.com/";
PostMethod postMethod = new PostMethod(url);
//好像用GetMethod就不行,HttpClient就会自动处理重定向
HttpClient httpClient = new HttpClient();
httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT,
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1");// 设置UA
int statusCode = httpClient.executeMethod(postMethod);
System.out.println("HTTP状态码:" + statusCode);
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY)
{
// 从头中取出转向的地址
Header locationHeader = postMethod.getResponseHeader("location");
String location = null;
location = locationHeader.getValue();
System.out.println("页面重定向到:" + location);
}