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

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

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

REPLACE_WITH_ACTUAL бла бла бла

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 12 декабря 2008

Что ж, коллега в моей команде решил проблему выше, посмотрев на некоторые типичные примеры, которые я нашел ранее, в том числе на 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), вы получите необъявленный заголовок, именно то, что я хотел.

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

...