我查看了HttpComponentsMessengerSender的相关文档,发现
HttpComponentsMessageSender.RemoveSoapHeadersInterceptor
HttpClient HttpRequestInterceptor实现,从请求中删除内容长度和传输编码头。这是必要的,因为一些SAAJ和其他SOAP实现自己设置了这些头,如果设置了这些头,HttpClient会抛出异常。
解决方案是将其添加到
HttpComponentsMessengerSender
.
发送方的最终版本为:
SSLContext sslContext = SSLContexts.custom().useProtocol("TLSv1").build();
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLContext(sslContext)
.addInterceptorFirst(new
HttpComponentsMessageSender.RemoveSoapHeadersInterceptor())
.build();
HttpComponentsMessageSender sender = new HttpComponentsMessageSender(httpClient);