From: "中田雅美" Date: 2006-12-18T19:11:37+09:00 Subject: [ruby-list:43064] soap4rでの送信フォーマット変更 はじめまして、本日登録しました中田と申します。 SOAPについて、お知恵をお貸しください。 soap4r(1.5.5)を使用して、他言語CGIとのSOAP通信を行おうとしています。 RubyがClientになる場合と、 Server(RonR/AWSを使用)になる場合の2パターンがあります。 やりたいのは、Clientの時は <メソッド名> Request文字列(任意) を送信。Serverの時は <メソッド名 + "Responce"> Responce文字列(任意) を返すという処理です。 メソッド名のタグを含めたBody内側を自分でセットし、 変更されること無く送信したいです。 soap4rの中では、 や<変数名>のタグが付けられたり、 中の文字列がエスケープされるようになっているようです。 これを回避する良い方法を探しております。 今のところ、 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 << "\n" + " \n" # 送信文字列(Bodyの内側の内容)をそのままセット obj.body.request.each {|key, val| @buf << val.to_s } # 終了タグまで固定でセット @buf << "\n \n" # ここまで追加 @handlers.each do |uri, handler| handler.encode_epilogue end epilogue @buf end 無理矢理で見苦しくてすみません。 このようなライブラリ変更なしで済む方法や 手がかりがありましたらご教示ください。 よろしくお願いします。