Mam problem, który moim zdaniem dotyczy przestrzeni nazw. WSDL można pobrać stąd: http://promostandards.org/content/wsdl/Order%20Shipment%20NotificationService/1.0.0/OSN-1-0-0.zipruby savon i wsdl namespacing
Kiedy żądanie jest generowane wygląda to tak:
<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>
Skutkuje to winy mydła.
Kiedy SoapUI konstruuje żądanie przy użyciu tego samego WSDL wygląda to
<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>
Widać, że SoapUI umieścił nazwę użytkownika i hasło wewnątrz przestrzeni nazw „shar”. Zauważyłem, że nie jest to bezpośrednio wymienione w pliku WSDL ani w żadnym pliku XSD bezpośrednio załadowanym przez WSDL. Zostaje załadowany plik podobny do WSDL => XSD file => XSD zawierający shar namespace. Czy to może być problem? Jak mogę dodać przestrzeń nazw tylko do 3 kluczy? Używam Savona 2.11.1 i nori 2.6.0