0

我已经覆盖了 SimpleHandler 以使用soap4r 传递用户名和密码。问题是我被迫提供一个 QName,这导致结果失败,因为它的格式不正确。

soap4r 添加的是这样的(“ns1”是虚拟值):

<env:Header>
  <n1:ns1 env:mustUnderstand="0"
    xmlns:n1="ns1">
    <n1:Username>someuser</n1:Username>
    <n1:Password>topsecret</n1:Password>
   </n1:ns1>
 </env:Header>

它需要是这样的:

<env:Header>
  <n1:Username>someuser</n1:Username>
  <n1:Password>topsecret</n1:Password>
</env:Header>

我怎样才能传入包含名称?

4

2 回答 2

0

Soap4R 对覆盖标头非常挑剔。在您的情况下,您需要添加两个“平面”处理程序(一个用于用户名,另一个用于密码),而不是同时添加一个处理程序。

于 2009-10-30T12:33:06.767 回答
0

看起来您需要对soap4r进行一些更改:http: //dev.ctor.org/soap4r/browser/branches/1_5/lib/soap/header/handler.rb

如果服务不是那么复杂,您可以尝试 Handsoap https://github.com/unwire/handsoap/wiki/authentication#WS-Security

于 2009-10-30T14:00:48.587 回答