一、調用微信接口時,經常出現錯誤:
java.lang.RuntimeException: org.apache.http.NoHttpResponseException: api.weixin.qq.com:443 failed to respond
接口:https://api.weixin.qq.com/sns/jscode2session
二、原因:
1. 微信服務端的http keepalive時長是20s
2. 使用一個連接發送http請求完成后,假設下次使用這個連接是在20s之后,微信端其實已經拋棄了這個連接
3. 如果繼續使用這個連接發送請求,就會報443的錯誤,微信服務端主動拋棄鏈接
三、解決
1. HTTP客戶端連接設置超時時間(socketTimeout),不超過20s,例如15s
2. 檢查空閑連接的機制setValidateAfterInactivity,也設置成15s
3. 清理過期連接的時間evictIdleConnections,也設置成15s
4. 加上重試機制setRetryStrategy
參考:
https://juejin.cn/post/6865277186438496269
