2017-01-31 2 views
0

Я пытаюсь использовать Савон 2.7.2 драгоценный камень, чтобы сделать запрос SOAP, например:Как построить правильную запрос SOAP для https://wyszukiwarkaregontest.stat.gov.pl с Савон жемчужину

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://CIS/BIR/PUBL/2014/07"> 
    <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
     <wsa:Action>http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj</wsa:Action> 
     <wsa:To>https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc</wsa:To> 
    </soap:Header> 
    <soap:Body> 
     <ns:Zaloguj> 
     <!--Optional:--> 
     <ns:pKluczUzytkownika>abcde12345abcde12345</ns:pKluczUzytkownika> 
     </ns:Zaloguj> 
    </soap:Body> 
</soap:Envelope> 

Я пробовал разные aproaches для достижения этой цели, например:

client = Savon.client(wsdl: "https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/wsdl/UslugaBIRzewnPubl.xsd", namespace: "http://CIS/BIR/PUBL/2014/07") 
client.call(:zaloguj, message: { "pKluczUzytkownika" => "abcde12345abcde12345" }) 

Но это дает мне Savon::HTTPError: HTTP error (415): The server cannot service the request because the media type is unsupported

Когда я инспектировать Савон-х builder.build_document возвращается:

"<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
<env:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:wsdl=\"http://CIS/BIR/PUBL/2014/07\" xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\"> 
    <env:Body> 
    <wsdl:Zaloguj> 
     <pKluczUzytkownika>abcde12345abcde12345</pKluczUzytkownika> 
    </wsdl:Zaloguj> 
    </env:Body> 
</env:Envelope>" 

Я сделал запрос к wsdl от RailsCasts без проблем, но с этим ... Я потратил пару часов, чтобы понять это и ничего. Может ли кто-нибудь мне помочь? :)

+0

Может попытаться установить заголовок внутри Savon.client как 'заголовки: { 'Content -Type '=>' application/soap + xml; charset = utf-8 '} 'или' {' Content-Type '=>' text/xml; кодировка = UTF-8' } ' –

ответ

2

нормально, это решение моей проблемы:

client = Savon.client(wsdl: "https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/wsdl/UslugaBIRzewnPubl.xsd", namespace: "http://CIS/BIR/PUBL/2014/07", env_namespace: :soap, use_wsa_headers: true, soap_version: 2, endpoint: "https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc", namespace_identifier: :ns) 
response = client.call(:zaloguj, message: { "ns:pKluczUzytkownika" => "abcde12345abcde12345" }, soap_action: "http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj") 

Я надеюсь, вы найдете ее полезной :)

Смежные вопросы