通过 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 调用的主要内容,如果未能解决你的问题,请参考以下文章

咖啡馆的故事:FTP, RMI , XML-RPC, SOAP, REST一网打尽

通过 XMPP 进行 XML RPC

Spring的Restful

api接口,RPC,WebService分别解决啥问题

XMPP 传入和传出文件委托未调用

XMPP:如何查询特定名册的存在