[#43032] 「何もない(nil)」+「何か(v)」→「何か(v)」 — take_tk <ggb03124@...>
たけ(tk)です
9 messages
2006/12/11
[#43033] Re: 「何もない(nil)」+「何か(v)」→「何か(v)」
— Yukihiro Matsumoto <matz@...>
2006/12/11
まつもと ゆきひろです
[#43042] はじめまして — "hiroshi kamata" <hiroshi_kamata@...>
11月22日の朝日新聞夕刊をみて興味をもったものです。
6 messages
2006/12/13
[#43064] soap4rでの送信フォーマット変更 — "中田雅美" <mimiger2007@...>
はじめまして、本日登録しました中田と申します。
4 messages
2006/12/18
[ruby-list:43064] soap4rでの送信フォーマット変更
From:
"中田雅美" <mimiger2007@...>
Date:
2006-12-18 10:11:37 UTC
List:
ruby-list #43064
はじめまして、本日登録しました中田と申します。
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
無理矢理で見苦しくてすみません。
このようなライブラリ変更なしで済む方法や
手がかりがありましたらご教示ください。
よろしくお願いします。