我已经覆盖了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>
我如何不传递包含的名称?
答案 0 :(得分:0)
Soap4R对覆盖标题非常挑剔。在您的情况下,您需要添加两个“平面”处理程序(一个用于用户名,另一个用于密码),而不是一个用于两者。
答案 1 :(得分:0)
看起来您需要对soap4r进行一些更改:http://dev.ctor.org/soap4r/browser/branches/1_5/lib/soap/header/handler.rb
如果服务不是那么复杂,你可以试试Handsoap http://wiki.github.com/unwire/handsoap/authentication#WS-Security