通过 XMPP 进行 SOAP/REST 调用
Posted
技术标签:
【中文标题】通过 XMPP 进行 SOAP/REST 调用【英文标题】:SOAP/REST calls over XMPP 【发布时间】:2010-10-24 17:30:56 【问题描述】:我想制定一个解决方案,让我可以使用连接到 gtalk 的 XMPP 聊天客户端,解析用于 LAN(在防火墙代理等之后)的 SOAP Web 服务和 REST 调用,并转移到另一个不同 LAN 上的其他聊天客户端(在其他防火墙代理等之后)。
我已经缩小了Smack API 的范围,但是作为 XMPP 和 smack 的新手,我不知道 Smack 是否可行?
smack 是否提供这样的功能?我尝试了 Smack 文档,但无法深入理解它。
欢迎任何其他可能的替代方案和建议。
【问题讨论】:
您是否认真尝试通过 XMPP 隧道传输 HTTP 以避开防火墙? 是的,你说得对,达雷尔,请提出你的意见。 请注意,REST 对 XMPP 没有任何意义(它与 HTTP 的耦合非常强),但 SOAP 完全正常。 @DonalFellows:不,REST 不与 HTTP 耦合。请再次阅读菲尔丁博士的论文,它明确说明了这一点。事实上,REST 的所有属性都可以通过仔细的协议设计在 XMPP 中实现。然而,这并不重要,因为 OP 可以完成他真正想要的,而无需对协议做出本体决定。 【参考方案1】:以XEP-72 开头,提示您应该使用的协议风格。这样做有一些很好的理由,包括:
防火墙穿越(如前所述) 不必经常进行 TCP 连接,从而节省延迟 不必对每个请求进行身份验证,但可以对流进行身份验证 无需为每个请求使用单独的 XML 解析器,这意味着处理效率更高【讨论】:
【参考方案2】:为了让事情更容易从http://xmpp.org/extensions/xep-0050.html开始,并以restfull方式使用命令的节点属性
【讨论】:
以上是关于通过 XMPP 进行 SOAP/REST 调用的主要内容,如果未能解决你的问题,请参考以下文章