我已经从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,我看不出任何明显的机制。
真的很感激指向如何做到这一点。
答案 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标题,这正是我想要的。
我认为我会将我的解决方案粘贴到我自己的问题上,假设其他人可能会遇到同样的问题。