使用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