[錯誤筆記]同一個HttpClient例項自動管理cookie
阿新 • • 發佈:2019-02-14
問題描述
HttpClientpost模擬登入後,用get讀取內容為空:
問題分析:
post模擬登入經檢測沒有問題,那麼問題可能出現在
- post後的會話沒有保持下來,所以get時對於伺服器我處於非登入狀態
- http方法不對
- get到的資訊編碼不對
- 4.get到的資訊本來就是空的
- 連接出現問題
逐一排查問題所在
- 通過輸入地址直接訪問,得到正確資訊,所以用get方法沒問題。
- 分析反饋的entit,狀態碼200,說明連線沒問題,編碼有出現chunk字樣。
綜上所訴,所以問題可能出現在編碼和會話身上,仔細檢查發現,模擬get方法和模擬post方法的httpclient是兩個例項。
然而httpclient4.X版本是同一個httpclient例項自動管理cookie
解決方案
讓模擬post方法和模擬get方法使用同一個HttpClient例項。
反思總結
當發現程式效果和預期效果不同時,應該順著程式完成流程,儘可能多的分析可能出現的錯誤,然後逐一排查,我一直覺得是編碼問題,在chunk上大費周章,結果沒有解決問題,等到第二天才恍然大悟是httpclient例項不同導致出現了問題。出現這種”白費功夫”的現象是因為自己對問題分析能力不足導致,還沒有養成“列舉問題所在-逐一排查”的習慣,以後還要多加思考。
分析問題-列舉可能-逐一排查(由易到難)
errorList.addCase ("……");
errorList.addCase("……");
errorList.addCase("……");
while(errorList.next())
{
if(errorlist.isError)
{
system.out.printf("……");
break;
}
}