使用RestTemplate請求rest接口出現The server failed to respond with a valid HTTP response問題


使用RestTemplate請求rest接口時出現The server failed to respond with a valid HTTP response問題:第一次請求rest接口正常返回,再次請求時就會返回這個錯誤;

而且再次請求其他的rest接口也會出現這個錯誤;

網上分析說:這個錯誤大致是說server給的不是正確的http response.這個錯誤是可能是由於:使用同一個HttpClient長連接/保持連接, 然后又使用這個httpClient進行其他網絡請求。

在當前項目中RestTemplate  httpclient連接池方式:所以每次都會復用連接池中的http連接;

然后開始驗證;改造RestTemplate生成;改成每次都創建新的http連接

public class RestTemplateUtils {
    public static RestTemplate createRestTemplate(){
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        requestFactory.setReadTimeout(10000);
        requestFactory.setConnectTimeout(15000);
        return new RestTemplate(requestFactory);
    }
}
發現不再出現這個錯誤;證明確實是這個問題;

聯系rest接口提供方:發現提供方返回的response響應頭設置了Connection:keep-alive 從而導致連接一致保持;
rest提供方刪除這個設置后,再次采用RestTemplate httpclient連接池的方式進行調用;發現不再出錯;





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM