我已经从wsdl创建了一个驱动程序
当我调用请求时,我希望头包含一个元素,即,我希望看到如下内容:
用实际值替换
呜呜呜呜
然而,环顾四周,每个人都在谈论如何子类化SOAP::Header::SimpleHandler,然后将实例注入driver.headerhandler
但是,如果我这样做,那么我最终会得到一个嵌套的头,即,
用实际值替换
因此,必须有一种方法将一个元素添加到现有的头处理程序中,这样我就可以做一些类似的事情。
driver.headerhandler.addelement(“会话”,“123”)
但我找不到办法我也尝试过
driver.headerhandler[“session”]=“123”和其他类似的技巧,但我找不到任何方法来实现这一点。
看着driver.headerhandler.methods,我看不到任何明显的机制。
如果你能告诉我怎么做就好了。

最佳答案

好吧,我团队中的一位同事在查看了一些我以前发现的典型示例(包括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创建中),您将得到不受尊重的头,这正是我想要的。
我想我会把我的解决方案粘贴到我自己的问题上,前提是其他人可能会遇到同样的问题。

关于ruby - 使用soap4r从ruby生成soap消息时,如何在 header 中添加name.value,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/361313/

10-15 13:35