2009-08-31 5 views
0

再び石鹸で。 それはヘッダDERVを作成している私が行っているこのRuby soap4rヘッダーを構築

<SOAP-ENV:Header> 
<ns1:UserAuthentication 
SOAP-ENV:mustUnderstand="1" 
SOAP-ENV:actor="http://api.affiliatewindow.com"> 
<ns1:iId>*****</ns1:iId> 
<ns1:sPassword>*****</ns1:sPassword> 
<ns1:sType>affiliate</ ns1:sType> 
</ns1:UserAuthentication> 

<ns1:getQuota SOAP-ENV:mustUnderstand="1" SOAP- 
ENV:actor="http://api.affiliatewindow.com">true</ns1:getQuota> 
</SOAP-ENV:Header> 

のように見えることになっているSOAP4R私が使用してヘッダーを構築しようとしています。クラス

AffHeader < SOAP::Header::SimpleHandler 

UserAuthentification要素が作成されました。

def initialize 
    @element = XSD::QName.new(nil, "UserAuthentification") 
    super(@element) 
    end 

そして、どのように私はさらにたいように私のヘッダが見えるようにすることができ

def on_simple_outbound 
    self.mustunderstand = 1 
    { "iId" => ID, "sPassword" => PASSWORD, "sType" => "affiliate" } 
end 

ハッシュを返します。たとえば、アクターを追加するにはどうすればいいですか?

私はこれを検索し続けるつもりですが、どんなヘルプも非常に高く評価されています。

SOAP4Rで

答えて

0

は、target_actor属性は読み取り専用ですが、あなたのような新しいメソッドを追加することができますありがとう:

def target_actor= (uri) 
    @target_actor = uri 
end 

とあなたのon_simple_outbound方法では、あなたはとてもようなあなたのURIを持つtarget_actor呼び出すことができます:

def on_simple_outbound 
    self.mustunderstand = 1 
    self.target_actor = "http://api.affiliatewindow.com" 
    { "iId" => ID, "sPassword" => PASSWORD, "sType" => "affiliate" } 
end 

irb(main):003:0> h = AffHeader.new 
=> #<AffHeader:0x3409ef0 @target_actor=nil, @encodingstyle=nil, 
@element=#<XSD::QName:0x1a04f5a {}UserAuthentification>, 
@mustunderstand=false, @elename=#<XSD::QName:0x1a04f5a {}UserAuthentification>> 

irb(main):006:0> h.on_simple_outbound 
=> {"sType"=>"affiliate", "sPassword"=>"secret", "iId"=>"johndoe"} 

irb(main):007:0> h 
=> #<AffHeader:0x3409ef0 @target_actor="http://api.affiliatewindow.com", 
@encodingstyle=nil, 
@element=#<XSD::QName:0x1a04f5a {}UserAuthentification>, 
@mustunderstand=1, @elename=#<XSD::QName:0x1a04f5a 
{}UserAuthentification>> 
+0

ありがとうございます!それは俳優を追加し、すべてが問題ありません。私はそれがあなたにより良いコントロールを与えることを見たので、おそらくhandsoapに切り替える必要があります。 soap4rは大丈夫ですが、経験不足のためにいくつかの重要な要素を制御するのが難しい場合があります。 –

関連する問題