2012-12-14 112 views
2

我正在嘗試使用Savon向Ruby發出SOAP請求,但收到來自服務器的400錯誤請求響應。Savon - SOAP - ruby​​ - 400 Bad Request

這是我想要做的要求(根據的soapUI):

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:apis="http://www.csisoftwareusa.com/ApiService">  
    <soap:Header/>  
    <soap:Body> 
     <apis:AuthenticateConsumer> 
     <!--Optional:--> 
     <apis:consumerName>?</apis:consumerName> 
     <!--Optional:--> 
     <apis:consumerPassword>?</apis:consumerPassword> 
     </apis:AuthenticateConsumer>  
    </soap:Body> 
</soap:Envelope> 

這裏是我讓使用Ruby的請求;它返回一個400錯誤的請求錯誤:

<SOAP-ENV:Envelope> 
    <SOAP-ENV:Body> 
    <ins0:AuthenticateConsumer> 
     <ins0:consumerName>?</ins0:consumerName> 
     <ins0:consumerPassword>?</ins0:consumerPassword> 
    </ins0:AuthenticateConsumer> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 
Http Headers: SOAPAction: "http://www.csisoftwareusa.com/ApiService/AuthenticateConsumer", Content-Type: text/xml;charset=UTF-8, Content-Length: 504 

這是我能用Python做的請求。這個請求成功:

<SOAP-ENV:Envelope> 
    <SOAP-ENV:Header/> 
    <ns0:Body> 
    <ns1:AuthenticateConsumer> 
     <ns1:consumerName>?</ns1:consumerName> 
     <ns1:consumerPassword>?</ns1:consumerPassword> 
    </ns1:AuthenticateConsumer> 
    </ns0:Body> 
</SOAP-ENV:Envelope> 
Http headers: {'SOAPAction': u'"http://www.csisoftwareusa.com/ApiService/AuthenticateConsumer"', 'Content-Type': 'text/xml; charset=utf-8'} 

我需要調用該API集成到Rails應用程序,所以在Python中它不是一個有效的解決方案。

我想知道是否有人可以看到我失蹤的東西。空的<SOAP-ENV:Header />是否標記了問題,如果是這樣,我如何將它添加到Savon請求中?

感謝, 斯圖爾特

+0

是什麼'>?看起來像你有無效的XML。你應該真的使用像Nokogiri這樣的xml構建器來構建它。 –

+0

@MichaelPapile顯然這是我在StackOverflow問題格式化中的一個錯誤;我重新查詢並且最後一個支架不在那裏。我編輯了問題的文本來解決這個問題。謝謝! – Stuart

+0

有關於此的任何更新?我正在同樣的事情上掙扎。使用版本2的薩翁寶石 – hyeomans

回答