Ruby savon and wsdl namespacing

I have a problem that in my opinion relates to namespaces. WSDL can be downloaded here: http://promostandards.org/content/wsdl/Order%20Shipment%20NotificationService/1.0.0/OSN-1-0-0.zip

When a request is created, it looks like this:

<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.promostandards.org/WSDL/OrderShipmentNotificationService/1.0.0/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<tns:GetOrderShipmentNotificationRequest>
  <tns:wsVersion>1.0.0</tns:wsVersion>
  <tns:id>myusername</tns:id>
  <tns:password>mypassword</tns:password>
  <tns:queryType>3</tns:queryType>
  <tns:shipmentDateTimeStamp>2017-07-19</tns:shipmentDateTimeStamp>
</tns:GetOrderShipmentNotificationRequest>
</soapenv:Body>
</soapenv:Envelope>

This results in a soap error.

When SoapUI creates a request using the same WSDL, it looks like

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.promostandards.org/WSDL/OrderShipmentNotificationService/1.0.0/" xmlns:shar="http://www.promostandards.org/WSDL/OrderShipmentNotificationService/1.0.0/SharedObjects/">
<soapenv:Header/>
<soapenv:Body>
  <ns:GetOrderShipmentNotificationRequest>
     <shar:wsVersion>1.0.0</shar:wsVersion>
     <shar:id>myusername</shar:id>
     <shar:password>mypassword</shar:password>
     <ns:queryType>3</ns:queryType>
     <ns:shipmentDateTimeStamp>2017-07-19</ns:shipmentDateTimeStamp>
  </ns:GetOrderShipmentNotificationRequest>
</soapenv:Body>
</soapenv:Envelope>

You can see that SoapUI put the username and password in the namespace "shar". I noticed that this is not specified directly in the WSDL or in any XSD file directly loaded by WSDL. It loads as WSDL => XSD file => XSD file containing shar namespace. could this be a problem? How to add a namespace to only 3 keys? I am using savon 2.11.1 and nori 2.6.0

+6
1

, Savon XSD, SharedObject. , , , .

:

client = Savon.client do
  endpoint "http://localhost/OrderShipmentNotificationService.svc"
  element_form_default :qualified
  namespace "http://www.promostandards.org/WSDL/OrderShipmentNotificationService/1.0.0/"
  namespace_identifier :ns
  namespaces "xmlns:shar"=>"http://www.promostandards.org/WSDL/OrderShipmentNotificationService/1.0.0/SharedObjects/"
end

response = client.call("GetOrderShipmentNotificationRequest") do |locals|
  locals.message "shar:wsVersion"=>"1.0.0","shar:id"=>"myusername",...
end
0

All Articles