【发布时间】:2019-09-29 09:44:57
【问题描述】:
我正在尝试通过 HTTPS 连接连接到第三方系统并发布参数以接收响应。这将是一个我已经开始研究的 POC。我已经在我的 Spring 应用程序中使用 SI 与出站网关建立了客户端-服务器 TCP 连接。 SI 提供了实现 HTTPS 连接的方法还是有更简单的方法,RestTemplate?
我可以看到Spring Integration - how to send POST parameters with http outbound-gateway,但它谈论的是 HTTP 而不是 HTTPS。
注意:Linux 服务器已经使用 CURL 与该第三方系统通信。我需要在我的 spring 应用程序中复制这种通信。这是共享的示例 Req / Res。
请求数据:ord=000000&term=022&storenum=00623&fgen=667&action=1024&ctime=072119:22:23:32&tmout=08&PLU=00007565604633&BC=10364678071919225000623&QTY= 1.000
回复:000000022006231024ctime=072119:22:23:32&itmz=P---11NSFU-T&desc=JARU ALL MN LT UP DIAMOND&rmfsline=1&avqty=1.0&barcode=10364678071919225000623&qty=1.0&rcptqty=3.0000&rcptline=5&upc=7565604633&reqqty=1.0&unitprice=1.97&price=5.91&dept=92&resp=00&POST /RMFSWeb/LineAuthListener? HTTP/1.1
另外,与我共享的 URL 是 https://xx-cert.keb.com:20143,但 URL 中没有类/方法名称。 HTTPS 连接不需要吗?
请分享您对我如何使用上述数据从 spring 实现 https 连接的想法。感谢您的帮助
【问题讨论】:
-
HTTP和HTTPS在业务逻辑或请求/回复处理上没有区别。唯一不同的是围绕常规 HTTP 请求/回复的 SSL/TLS。这实际上已经是传输层配置的问题。通常我们只需要在 Java 中有一个正确的
cacerts。您还可以查看 Apache Commons HTTP 客户端中更高级的 SSL 配置:baeldung.com/httpclient-ssl -
@ArtemBilan 这是我对您的评论的总结和问题。如果我错了,请纠正我 1. Spring Rest 模板是我可以继续使用的方式,在这种情况下不是 SI。 2. 共享的 ref url 没有说明证书/信任库。 3.假设必须将https url的证书添加到部署我的应用程序的服务器的信任库中。 4 我分享的https url不应该有
https://domain:port/{someService}/{someMethod},因为你说req/reply处理与http相同吗?现在它只是https://domain:port。请指导。 -
1.没有正确的。 Spring Integration
HttpRequestExecutingMessageHandler完全基于RestTemplate。 SSL 配置完全不相关。 -
2.这是正确的。您只需使用 HTTPS 架构,底层客户端将在商店中选择适当的证书来附加请求。
-
4. URL确实没有区别。您应该使用的 REST API 取决于您的提供商。这与 HTTP 或 HTTPS 无关。
标签: java spring spring-integration spring-integration-http