因為工作需要,想研究一下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的原創文章,請關注公眾號"汪子熙":