Savon 2客户端在Ruby on Rails中返回空白数组以进行响应

时间:2014-02-24 13:00:13

标签: ruby-on-rails ruby soap savon

我正在使用 savon gem在我的项目中集成 paysbuy ,这是在Ruby on Rails中创建的。这就是我创建savon客户端的方式

client = Savon.client do
endpoint "https://www.paysbuy.com/receiveresponse/Result.aspx"
namespace "https://www.paysbuy.com/receiveresponse/ResultReg.aspx"
wsdl "https://demo.paysbuy.com/api_paynow/api_paynow.asmx"
end  
logger.info"%%%%%%%%%%%%%%%%%#{client.operations}%%%%%%%%%%%%%%5555555"

但“ client.operations ”的响应将显示为“ [] ”。我需要帮助来纠正我身边的任何错误。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我假设您使用Savon 2.x? 您的通话语法不正确。您需要一个参数列表而不是一个块。

您还将WSDL与WSDL较少的调用约定混合在一起。你要么指定

wsdl:

endpoint: ...
namespace: ...

client.operations不起作用,因为你没有给它一个正确的wsdl网址。

假设您是基于MS的界面,可以安全地假设您可以在URL处使用参数?WSDL检索WSDL。试试这个:

client = Savon.client(
    wsdl: "https://demo.paysbuy.com/api_paynow/api_paynow.asmx?wsdl",
    log: true,
    log_level: debug,
    pretty_print_xml: true
)

print client.operations

不幸的是,使用Savon调用失败了。我怀疑它无法解释WSDL文档。

您可以做的是使用SoapUI检查您的服务并构建一个没有WSDL的客户端。

client = Savon.client(
    endpoint: "https://demo.paysbuy.com/api_paynow/api_paynow.asmx",
    namespace: "http://tempuri.org",
    log: true,
    log_level: debug,
    pretty_print_xml: true
)

我读了WSDL并找到了可能是命名空间的东西,但这可能很棘手。有时需要一些修补才能找到正确的请求。 当您使用SoapUI找到工作请求时,需要将其转换为Ruby代码才能使其正常工作。这至少是我的方法。 当你达到这一点时,请随时询问。