【问题标题】:soap client for ruby 1.9 and railsruby 1.9和rails的soap客户端
【发布时间】:2010-02-04 00:06:28
【问题描述】:

到目前为止,我使用soap4r 作为Ruby 1.8.x 的SOAP 客户端,但现在我转向Ruby 1.9.x。不幸的是,soap4r 不适用于 Ruby 1.9.x 我只是得到“无效的多字节转义”,这似乎无法解决,主要是因为自 2007 年以来soap4r gem 没有更新,所以我认为该项目已经死了。

我查看了 handsoap,但我必须手动绘制所有内容,这需要几天时间才能完成,这是一个很大的 API。

是否有其他的soap客户端可以自动将所有soap-xml内容映射到ruby-objects(链接soap4r),反之亦然?

【问题讨论】:

    标签: ruby-on-rails ruby soap


    【解决方案1】:

    Savon 将 XML 部分抽象为 Ruby 哈希。看看:http://github.com/rubiii/savon

    【讨论】:

    • 我从来不明白,但现在我明白了它是如何工作的。无论如何,仍然存在一个问题,它会丢失所有 XML 属性,例如 my content。但我可以获取 XML 并使用 XmlSimple.xml_in(response.to_xml, { 'ForceArray' => false }) 解析它。感谢您为我指明正确的方向!
    • 很遗憾你是对的。 Savon 使用 John Nunemacer 的 Crack gem 将 XML 转换为 Hash。属性的问题是 Crack 库中的一个已知错误。
    【解决方案2】:

    如果这是 handsoap 的问题,那么您可以将 hashie gem 与 handsoap 一起使用。如果有帮助,Hashie 会将 xml 元素转换为实例方法调用。

    Soap4R 很痛苦,但我喜欢它有一个原因,那就是它提供的独立的肥皂服务器。它通过快速构建您自己的soap服务器来模拟响应,从而使测试外部soap服务变得非常容易,这样,您不必向外部soap服务器发出请求以进行集成测试,其次它不会离开未经测试的soap客户端相关代码。

    【讨论】:

    • 我喜欢使用 vcr gem,所以一旦我有了涵盖对外部肥皂服务器的调用的规范,这些结果就会缓存在磁带中。因此,即使没有任何网络访问权限,也不需要本地肥皂服务器,我也可以运行我的规范。使用配置为使用 net http 进行调用的 handsoap,vcr 会自动拦截其调用。
    猜你喜欢
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多