Ruby soap4r сборочные заголовки - PullRequest
0 голосов
/ 31 августа 2009

Опять с мылом. Я пытаюсь создать заголовок, используя 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> 

Я создал заголовок derv. класс

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

Как сделать так, чтобы заголовок выглядел так, как я хочу дальше. Как мне добавить актера например.

Я собираюсь продолжить поиск по этому вопросу, любая помощь очень ценится.

Спасибо

1 Ответ

0 голосов
/ 03 сентября 2009

В SOAP4R атрибут target_actor доступен только для чтения, но вы можете добавить новый метод, например:

def target_actor= (uri)
  @target_actor = uri
end

и в вашем методе on_simple_outbound вы можете вызвать target_actor со своим URI следующим образом:

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>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...