前幾天項目中調用其他項目會時不時的報Connection Rest,然后找了各種方法都解決不了。被調用方查詢日志以后發現每次報Connection Rest時被調用方都未收到請求。
查詢了一些資料才發現,Nginx對服務端使用的是長連接,對客戶端使用的是短連接,而我們項目使用的是HttpPost ,HttpPost 默認是長連接。那么就很顯而易見了,我方調用數據提供方使用了長連接,而被調用方的nginx對我方使用的是短連接,被調用方接受請求以后立馬斷掉了,我方還在繼續等待結果就產生了Connection Rest。
因此,在httpclient請求時在請求頭設置為短連接即可:
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE);
- 1
- 2
修改以后經驗證請求正常不再報錯。。。