由於工做須要,想研究一下execute執行的邏輯。服務器
在這一行調用execute:ui
response = getHttpClient().execute(get);
getHttpClient的實現:this
private HttpClient getHttpClient() { if (this.m_httpClient == null) { this.m_httpClient = HttpClientBuilder.create().build(); } return this.m_httpClient; }
我在代碼裏聲明的HttpClient只是一個接口,url
實現類是InternalHttpClient。code
首先根據傳入的請求決定出目標-target hostblog
投遞到RedirectExec執行。接口
後者又投遞到RetryExec執行。get
收到307重定向:class
redirectsEnabled標誌位爲true:後臺
再看當前的請求確實被redirect了嗎?
original url:
個人後臺服務器返回的307,落到了分支HttpStatus.SC_TEMPORARY_REDIRECT處:
看來Apache的庫認爲只有HEAD和GET才能被redirect:
重定向最大次數:50
準備重試了:
要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":