乐趣区

Apache-httpclient的execute方法调试

因为工作需要,想研究一下 execute 执行的逻辑。

在这一行调用 execute:

response = getHttpClient().execute(get);

getHttpClient 的实现:

private HttpClient getHttpClient() {if (this.m_httpClient == null) {this.m_httpClient = HttpClientBuilder.create().build();}
        return this.m_httpClient;
    }

我在代码里声明的 HttpClient 只是一个接口,

实现类是 InternalHttpClient。

首先根据传入的请求决定出目标 -target host

投递到 RedirectExec 执行。

后者又投递到 RetryExec 执行。

收到 307 重定向:

redirectsEnabled 标志位为 true:

再看当前的请求确实被 redirect 了吗?

original url:

我的后台服务器返回的 307,落到了分支 HttpStatus.SC_TEMPORARY_REDIRECT 处:

看来 Apache 的库认为只有 HEAD 和 GET 才能被 redirect:

重定向最大次数:50

准备重试了:

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

退出移动版