我需要创建一个 ruby Web 服务客户端(使用 Savon)来对需要 Nonce 中的 EncodingType 的 Web 服务进行肥皂调用。所以正确的soap消息会有这样的Nonce元素:
......
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">SomeHashValue</wsse:Nonce>
......
但是在我的 Savon 客户端中,我不知道如何在 Nonce 元素中添加该属性。我的代码在这里:
......
client = Savon.client do
wsdl.endpoint = "http://webservicehost/TestWebService"
wsdl.namespace = "namespace"
wsse.credentials "username", "password"
wsse.digest = "true"
end
client.request :get_service do |soap|
soap.input = [
"GetService",
{ "xmlns" => "namespace" }
]
soap.body = {
"locale" => "en_US",
"serviceID" => '123'
}
end
......
生成的 SOAP 消息中的 Nonce 如下所示:
......
<wsse:Nonce>SomeHashValue</wsse:Nonce>
......
所以我的问题是,如何将属性 EncodingType 添加到 Nonce 元素,而不更改/删除 Nonce 元素中的 SomeHashValue?