Как добавить name.value в заголовок при генерации сообщения мыла из ruby ​​с soap4r

Я создал драйвер из WSDL

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

REPLACE_WITH_ACTUAL бла-бла-бла

Однако, оглядываясь вокруг, все говорят о создании подкласса SOAP :: Header :: SimpleHandler, а затем о внедрении экземпляра в driver.headerhandler.

Однако, если я это сделаю, то получу вложенный заголовок, т.е. REPLACE_WITH_ACTUAL

Так что должен быть способ просто добавить элемент в существующий обработчик заголовка, чтобы я мог сделать что-то вроде

driver.headerhandler.AddElement ("сессия", "123")

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

driver.headerhandler ["session"] = "123" и другие подобные приемы, но я не могу найти способ заставить эту работу.

Глядя на driver.headerhandler.methods, я не вижу никакого очевидного механизма.

Был бы очень признателен, как указывать на это.

11.12.2008 22:52:22
1 ОТВЕТ

Что ж, коллега в моей команде решил проблему выше, посмотрев на некоторые типичные примеры, которые я нашел ранее, в том числе на http://dev.ctor.org/soap4r/browser/trunk/sample/soapheader/authheader/ client2.rb

Оказывается, что тривиальное (вздох) решение состоит в том, чтобы заменить

def on_simple_outbound
  if @sessionid
     { "sessionid" => @sessionid }
  end
end

с

def on_simple_outbound
  if @sessionid
     @sessionid
  end
end

Теперь, если вы просто назовете заголовок «сессия» (при создании QName), вы получите необъявленный заголовок, именно то, что я хотел.

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

1
12.12.2008 19:29:41