2017-07-26 92 views
6

Ad alanlarıyla ilgili olduğuna inanıyorum bir sorun var. WSDL buradan indirilebilir: istek Bu gibi görünüyor oluşturulur http://promostandards.org/content/wsdl/Order%20Shipment%20NotificationService/1.0.0/OSN-1-0-0.zipruby ​​savon ve wsdl ad alanı

:

<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> 

Bu sabun arıza ile sonuçlanır.

SoapUI Sen SoapUI "shar" ad alanı içine kullanıcı adı ve şifreyi yerleştirmiş olduğunu görebilirsiniz bu

<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> 

benziyor aynı WSDL kullanarak isteği oluşturur. Bunun doğrudan WSDL'de veya doğrudan WSDL tarafından yüklenen herhangi bir XSD dosyasında listelenmediğini fark ettim. WSDL => XSD dosyası => shar ad alanı içeren XSD dosyası gibi bir şey yüklenir. Mesele bu olabilir miydi? Ad alanını yalnızca 3 tuşa nasıl ekleyebilirim? Savon 2.11.1 ve nori kullanıyorum 2.6.0

cevap

0

Sanırım Savon, burada SharedObject öğesine başvurmak için kullanılan bağlantılı XSD dosyalarını yorumlamıyor. Benzer bir sorun vardı ve bulduğum tek çözüm, ad alanlarının tanımını elle yazmaktı. Senin durumunda

böyle görünebilir:

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