java - 将代理数据设置为 Spring SOAP Web 服务模板
问题描述
我正在开发一个应用程序,我必须使用 SOAP Web 服务并将其转换为基于 Rest 的 Web 服务。我遵循Spring 团队的教程并能够生成 pojos,但是当我尝试使用 webServiceTemplate 进行调用时,出现主机无法识别的错误,这基本上是因为我在我们公司的代理后面。
我正在使用的技术堆栈是带有 web 模块和 spring-ws-core 的 Spring boot,我想知道如何在 webServiceTemplate 中设置我的代理数据。
谢谢
解决方案
经过大量研究,我想出了一个程序化的解决方案。一旦您定义了将扩展 WebServiceGatewaySupport
类的 SOAP 客户端,我创建了一个配置类(带有注释的@configuration
将声明我的 SOAP 客户端的 bean。在此方法中,我使用以下代码来设置我的代理信息,因此我能够使用我的网络服务:
@Bean
public CommerceSoapClient commerceSoapClient(Jaxb2Marshaller marshaller) {
CommerceSoapClient commerceService = new CommerceSoapClient();
//Setup proxy
HttpClientBuilder builder = HttpClientBuilder.create();
builder.addInterceptorFirst(new HttpComponentsMessageSender.RemoveSoapHeadersInterceptor());
HttpHost proxy = new HttpHost("127.0.0.1", 8080);
builder.setProxy(proxy);
CloseableHttpClient httpClient = builder.build();
HttpComponentsMessageSender messageSender = new HttpComponentsMessageSender(httpClient);
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.setMessageSender(messageSender);
webServiceTemplate.setDefaultUri("http://your webservice address path");
webServiceTemplate.setUnmarshaller(marshaller);
webServiceTemplate.setMarshaller(marshaller);
commerceService.setDefaultUri("https://your webservice address path");
commerceService.setWebServiceTemplate(webServiceTemplate);
return commerceService;
}
推荐阅读
- r - 无法在 R 中安装 catboost
- kotlin - 在方法开始处使用箭头符号(->)的目的是什么?
- javascript - 批量大小为 0 或 NaN。请选择一个非零分数
- jenkins - aws cloudformation deploy 在添加 --tags 时失败
- xslt - fop xslt 转换后 pdf 中的可选列
- unit-testing - 在 jest/enzyme 中将 e.target 作为 DOM 节点发送
- php - 内部联接和按日期过滤不起作用会引发完整性约束违规错误
- angular-material - 角材料主题
- php - CodeIgniter 中的 URI 路由导致 404 错误
- javascript - 当用户访问网站时隐藏桌面推送通知