我有一個HttpClient實例獲取遠程資源。我將其配置爲處理重定向。HttpClient 4重定向處理不同的內部Tomcat
HttpParams params = new BasicHttpParams();
params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT,
SOCKET_TIMEOUT);
params.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,
CONNECTION_TIMEOUT);
params.setLongParameter(ClientPNames.CONN_MANAGER_TIMEOUT,
CONN_MANAGER_TIMEOUT_VALUE);
params.setParameter(ClientPNames.COOKIE_POLICY,
CookiePolicy.BROWSER_COMPATIBILITY);
params.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, true);
params.setBooleanParameter(ClientPNames.REJECT_RELATIVE_REDIRECT,
false);
params.setIntParameter(ClientPNames.MAX_REDIRECTS, 4);
httpclient = new DefaultHttpClient(cm, params);
當我從webapp(Tomcat6)中調用它時,我得到了301響應。當我從JSE環境調用它時,我得到了200個最終響應(重定向得到處理)。我的第一個嫌疑犯是類加載問題,但打印出HttpClient類的來源顯示,這兩次從httpclient-4.2.5.jar加載
任何想法,我可以調試嗎?
感謝您的建議。日誌行顯示它最有可能是相同版本的代碼(按源代碼行號彙編),但唯一的區別是它不處理重定向。 DefaultRequestDirector中重定向處理之前的每個日誌行都是相同的。我看不到這些設置有什麼不同。 – Kafkaesque
@Kafkaesque由HttpClient生成的用戶代理頭應包含發佈版本。請將會話日誌添加到原始問題或將它們發佈到HttpClient用戶列表。對於隱藏在服務器機房中的火星人的可能性,HttpClient默認配置應該總是自動遵循有效的重定向位置。 – oleg
我即將發佈日誌,但隨後嘗試升級到httpclient 4.2.6版,它似乎解決了這個問題。感謝您的幫助 – Kafkaesque