/ / Savon2クライアントがRubyon Railsで応答するために空白の配列を返す-ruby-on-rails、ruby、soap、savon

Ruby on RailsでRuby-on-rails、ruby、soap、savonの応答のために空の配列を返すSavon 2クライアント

使っています サボン 統合するための宝石 paysbuy Ruby onRailsで作成された私のプロジェクトで。これが私が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は1

Savon 2.xを使用していると思いますか? 呼び出しの構文が正しくありません。ブロックではなくパラメータリストが必要です。

また、WSDLとWSDLレス呼び出し規約を組み合わせます。あなたはどちらかを指定します

wsdl:

または

endpoint: ...
namespace: ...

client.operations 正しいwsdlURLを指定しなかったため、機能しません。

これがMSベースのインターフェースであるとすると、パラメーターを使用してWSDLを取得できると想定しても問題ありません。 ?WSDL URLで。これを試して:

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コードに変換する必要があります。それは少なくとも私のアプローチでした。 その時点に達したときは、遠慮なく質問してください。