2010-02-04 103 views
4

直到现在我用soap4r作为我的SOAP客户端与Ruby 1.8.x,但现在我正在转向Ruby 1.9.x.不幸的是soap4r不能用于Ruby 1.9.x我只是得到了“无效的多字节转义”,这似乎是不可解的,主要是因为soap4r gem自2007年以来没有更新,所以我认为该项目已经死亡。肥皂客户端的红宝石1.9和rails

我看了一下handsoap,但是我必须手工绘制所有的东西,这需要几天的时间来完成,这是一个很大的API。

是否有一些其他的肥皂客户端,它自动将所有的soap-xml东西映射到ruby-objects(link soap4r),反之亦然?

回答

5

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

+0

我从来没有理解,但现在我看到它是如何工作的。 Anywas仍然存在一个问题,它会丢失所有XML属性,如我的内容。但是我可以使用XML并使用XmlSimple.xml_in解析它(response.to_xml,{'ForceArray'=> false})。感谢您指点我正确的方向! – Jeena 2010-02-07 22:40:16

+0

不幸的是,你是对的。 Savon使用John Nunemacker的Crack Gem将XML转换为哈希。属性的问题是Crack库中的一个已知错误。 – rubiii 2011-03-05 13:03:35

3

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

Soap4R是一个痛苦,但我喜欢它的原因之一,那就是它提供的独立肥皂服务器。它通过构建你自己的soap服务器来轻松测试外部soap服务,只需嘲笑响应,这样你就不必向外部soap服务器发出集成测试的请求,其次它不会离开与肥皂客户端相关的代码未经测试。

+0

我喜欢使用vcr gem,所以一旦我的规范覆盖了对外部soap服务器的调用,那些结果就被缓存在盒子中。因此,即使没有任何网络访问权限,也无需使用本地soap服务器,我也可以运行我的规格。使用配置为将net http用于其呼叫的handsoap,vcr会自动拦截其呼叫。 – Benissimo 2015-05-08 09:46:56