0%

HttpClient 4.1处理重定向

网上关于用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);
        }