HttpClient

HttpClient 4.1 post 继续访问 重定向,301

2018-05-22  本文已影响389人  Java及SpringBoot

在用HttpClient 4.1,用get 的时,如果有重定向,会自动再去访问重定向的内容 。

但用post访问url就不会自动 重定向的内容 。

用post访问url是地,我们经常会遇到返回301,302 返回代码,他们代表的是重定向。有两种方法让程序继续访问,

1 利用heard 取Location值重新再访问,代码如下

if (response.getStatusLine().getStatusCode() == 302) {
    Header[] hs = response.getHeaders("Location");
    if (hs.length > 0) {
        return sendPost(client, hs[0].toString(), headers, params, encoding, cookie);
    }
}

2 HttpClient实例中增加重定向策略,代码如下

client.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;
    }
});
上一篇下一篇

猜你喜欢

热点阅读