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

Ruby on rails Savon 2客户端在Ruby on Rails中返回空白数组以进行响应,ruby-on-rails,ruby,soap,savon,Ruby On Rails,Ruby,Soap,Savon,我正在使用savongem将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/

我正在使用savongem将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"

但是对“客户端操作”的响应是“[]”。我需要帮助来纠正我身边的任何错误。提前感谢您的帮助。

我想您使用的是Savon 2.x? 您呼叫的语法不正确。您需要的是参数列表,而不是块

您还可以将WSDL与无WSDL调用约定混合使用。您可以指定

wsdl:

client.operations
无法工作,因为您没有为其提供正确的wsdl url

如果这是一个基于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,发现了一些可能是名称空间的东西,但这可能很棘手。有时,它需要一些修补以找到正确的请求。 当您使用找到一个工作请求时,需要将其转换为Ruby代码以使其工作。至少这一直是我的方法。
请随时询问您何时达到该点。

我不知道paysbuy的具体情况,但您需要将WSDL文件传递到
WSDL:
选项。通过浏览您使用的URL,我可以立即看到这不是WSDL。好的,那么您能告诉我如何在Savon客户端中传递URL吗?好的,找出WSDL的位置,并替换
https://demo.paysbuy.com/api_paynow/api_paynow.asmx
使用该地址。
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
)