|
[ruby-list:43064] soap4rでの送信フォーマット変更: msg#00049lang.ruby.japanese
はじめまして、本日登録しました中田と申します。 SOAPについて、お知恵をお貸しください。 soap4r(1.5.5)を使用して、他言語CGIとのSOAP通信を行おうとしています。 RubyがClientになる場合と、 Server(RonR/AWSを使用)になる場合の2パターンがあります。 やりたいのは、Clientの時は <Envelope> <body> <メソッド名> Request文字列(任意) </メソッド名> </body> </Envelope> を送信。Serverの時は <Envelope> <body> <メソッド名 + "Responce"> Responce文字列(任意) </メソッド名 + "Responce"> </body> </Envelope> を返すという処理です。 メソッド名のタグを含めたBody内側を自分でセットし、 変更されること無く送信したいです。 soap4rの中では、 <return>や<変数名>のタグが付けられたり、 中の文字列がエスケープされるようになっているようです。 これを回避する良い方法を探しております。 今のところ、 soap/generator.rb の generate メソッドを以下のように変更して Envelopeの文字列を作っています。 def generate(obj, io = nil) @buf = io || '' @indent = '' prologue @handlers.each do |uri, handler| handler.encode_prologue end ns = XSD::NS.new @buf << xmldecl # 元のコード # encode_data(ns, obj, nil) # ここから追加 # Bodyタグまで固定でセット @buf << "<env:Envelope>\n" + " <env:Body>\n" # 送信文字列(Bodyの内側の内容)をそのままセット obj.body.request.each {|key, val| @buf << val.to_s } # 終了タグまで固定でセット @buf << "\n </env:Body>\n</env:Envelope>" # ここまで追加 @handlers.each do |uri, handler| handler.encode_epilogue end epilogue @buf end 無理矢理で見苦しくてすみません。 このようなライブラリ変更なしで済む方法や 手がかりがありましたらご教示ください。 よろしくお願いします。
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:43063] Re: [ANN] Rubyの本読書会 第三回のお知らせ, NIKU |
|---|---|
| Next by Date: | [ruby-list:43065] GTK2のListStoreとTreeViewについての質問, ruby-philia-Ru1csStN2yCTnpBtbRfDVg |
| Previous by Thread: | [ruby-list:43062] [ANN] Rubyの本読書会 第三回のお知らせ, MOROHASHI Kyosuke |
| Next by Thread: | [ruby-list:43065] GTK2のListStoreとTreeViewについての質問, ruby-philia-Ru1csStN2yCTnpBtbRfDVg |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |