如何使用soap4r从ruby生成soap消息时,如何向标头添加name.value

时间:2008-12-11 22:52:23

标签: ruby attributes header element soap4r

我已经从wsdl

创建了一个驱动程序

当我调用我的请求时,我希望标题包含一个元素,即我希望看到如下内容:

       REPLACE_WITH_ACTUAL            等等等等等等     

然而,环顾四周,每个人都在讨论子类化SOAP :: Header :: SimpleHandler,然后将一个实例注入到driver.headerhandler

但是,如果我这样做,那么我最终会得到一个嵌套的标题,即         REPLACE_WITH_ACTUAL   

所以必须有一种方法可以只添加一个元素到现有的headerhandler,所以我可以做类似的事情

driver.headerhandler.AddElement(“session”,“123”)

但我找不到任何办法。我也试过像

这样的东西

driver.headerhandler [“session”] =“123”和其他此类技巧,但我找不到任何方法让这项工作。

看看driver.headerhandler.methods,我看不出任何明显的机制。

真的很感激指向如何做到这一点。

1 个答案:

答案 0 :(得分: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

现在,如果您只是将标题名称命名为“session”(在QName创建中),那么您将获得unnested标题,这正是我想要的。

我认为我会将我的解决方案粘贴到我自己的问题上,假设其他人可能会遇到同样的问题。