Как добавить атрибут в заголовок SOAP с помощью Savon? - PullRequest
2 голосов
/ 25 января 2012

Мне нужно добавить этот атрибут ( xmlns: wsa = "http://www.w3.org/2005/08/addressing") в заголовок мыла, например:

<env:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
</env:Header>

Как это сделать, используя Savon?

Ответы [ 3 ]

2 голосов
/ 03 февраля 2012

Я действительно смог сделать еще один обход проблемы в моем случае, так как моя конечная точка приняла бы это:

<env:Header>
  <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">value</wsa:Action>
</env:Header>

Изучая оригинальный вопрос, вот ответ от создателя Savon:

"Эй, Магн,

глядя на код, который создает заголовок и теги body, кажется, что можно добавить любые атрибуты / пространства имен без необходимости исправления обезьяны прямо сейчас:

https://github.com/rubiii/savon/blob/v0.9.7/lib/savon/soap/xml.rb#L151

Если вам все еще нужна эта функция, откройте тикет, и я посмотрю, что я могу сделать: https://github.com/rubiii/savon/issues

В настоящее время я очень заинтересован в новом подходе к улучшению библиотеки, поэтому я не уверен, когда смогу решить вашу проблему. но ... я взломал вместе небольшой обезьян-патч, который должен помочь, пока эта функция не будет реализована:

https://gist.github.com/1698636

ура, Даниель "


0 голосов
/ 03 февраля 2012

foo = client.request do soap.header ['xmlns: wsa'] = 'http://www.w3.org/2005/08/addressing' end

0 голосов
/ 26 января 2012

Вы можете добавить свое собственное пространство имен к запросу следующим образом:

resp = client.request :soap_action do
    soap.namespace['xmlns:wsa'] = 'http://www.w3.org/2005/08/addressing'
end
...