我正在使用 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 ”的响应将显示为“ [] ”。我需要帮助来纠正我身边的任何错误。提前感谢您的帮助。
答案 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代码才能使其正常工作。这至少是我的方法。 当你达到这一点时,请随时询问。