Tôi cần tạo một máy khách dịch vụ web ruby (với Savon) để thực hiện cuộc gọi xà phòng đến dịch vụ web yêu cầu EncodingType trong Nonce. Vì vậy, chính xác thông điệp xà phòng sẽ có phần tử nonce như thế này:Máy khách SOAP với Ruby và Savon: Cách thêm thuộc tính EncodingType trong phần tử Nonce
......
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">SomeHashValue</wsse:Nonce>
......
Nhưng trong ứng dụng Savon của tôi, tôi không biết làm thế nào để thêm thuộc tính rằng trong các yếu tố nonce. Mã của tôi ở đây:
......
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
......
và nonce trong thông điệp SOAP tạo ra giống như:
......
<wsse:Nonce>SomeHashValue</wsse:Nonce>
......
Vì vậy, câu hỏi của tôi là, làm thế nào để thêm EncodingType thuộc tính đến yếu tố nonce, mà không thay đổi/loại bỏ SomeHashValue trong phần tử Nonce?