我使用 spring ws 模板创建了一个 Web 服务客户端。这按 http 协议(protocol)的预期工作。现在我想让它与 https 一起使用。我有相关的客户端 key 存储(jks 文件),现在我想配置消息发送者以发送安全请求。 您能帮我解决这个问题吗?
这是我的 spring bean 配置:
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"/>
<bean id="tokenrMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.token.dto.v1" />
</bean>
<bean id="tokenServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<constructor-arg ref="messageFactory" />
<property name="marshaller" ref="tokenrMarshaller"></property>
<property name="unmarshaller" ref="tokenrMarshaller"></property>
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.HttpComponentsMessageSender" />
</property>
<property name="defaultUri" value="${token.url}" />
</bean>
如果我在没有任何配置的情况下将 URL 从 http 更改为 https,应用程序将抛出“org.springframework.ws.client.WebServiceTransportException”。
最佳答案
设置 messageSender bean 的 httpClient 属性。
请参阅我的另一篇文章,了解如何配置 httpClient bean 以解决自签名证书问题。 sending https post request with post data using spring web
无需将 key 导入 keystore 。
关于java - 使用 Spring WebserviceTemplate 发送安全请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16428107/