因为工作需要,想研究一下 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 的原创文章,请关注公众号 ” 汪子熙 ”: