2010-10-29 51 views
1

我目前正在研究一個需要使用一些基於SOAP的Web服務的ROR項目。我所瞭解的有關使用Web服務的「危險」邊界。該站點提供的示例是使用帶有XMLHTTP的asp來發送似乎是包裹在SOAP信封中的某些XML。包含在XML中的還有驗證信息。如果我單獨構建XML,那麼我可以使用HTTParty將其發送並獲取響應?我可以使用httparty還是疲倦地使用SOAP Web服務嗎?

如果HTTParty不是答案,那麼任何替代建議將非常有用。下面是提供的asp示例。

const SoapServer = "http://demo.touricoholidays.com/ws/HotelsService.asmx" 
set xmldom = server.CreateObject("Microsoft.XMLDOM") 
set xmlhttp = server.CreateObject("Microsoft.XMLHTTP") 


xmlhttp.open "POST", SoapServer, false 
xmlhttp.setRequestHeader "Content-Type", "text/xml" 
xmlhttp.setRequestHeader "SOAPAction", "http://tourico.com/webservices/GetHotelDetails" 
xmlhttp.send(SoapTest) 

if xmlhttp.Status = 200 then '405 means error, 200 means ok. You know why. 

Set xmldom = xmlhttp.responseXML 
Response.write(xmldom.xml) 

Else 
Response.Write("Didn't Work<BR>") 
Response.Write("status="&xmlhttp.status) 
Response.write("<BR>"&xmlhttp.statusText) 
Response.Write("<BR>"&Request.ServerVariables("ALL_HTTP")) 
End if 
set xmlhttp = nothing 
set xmldom = nothing 
function SoapTest() 
SoapTest = SoapTest & "<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:SOAP-ENC=""http://schemas.xmlsoap.org/soap/encoding/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:m0=""http://example.com/travelservices/""> " 
SoapTest = SoapTest & "<SOAP-ENV:Header>" 
SoapTest = SoapTest & "<m:LoginHeader xmlns:m=""http://example.com/webservices/"">" 
SoapTest = SoapTest & "<m0:username>ABC</m0:username> " 
SoapTest = SoapTest & "<m0:password>123</m0:password> " 
SoapTest = SoapTest & "</m:LoginHeader>" 
SoapTest = SoapTest & "</SOAP-ENV:Header>" 
SoapTest = SoapTest & "<SOAP-ENV:Body>" 
SoapTest = SoapTest & "<m:GetHotelDetails xmlns:m=""http://example.com/webservices/"">" 
SoapTest = SoapTest & "<m:HotelID>2205</m:HotelID> " 
SoapTest = SoapTest & "<m:provider>localTgsProvider</m:provider> " 
SoapTest = SoapTest & "</m:GetHotelDetails>" 
SoapTest = SoapTest & "</SOAP-ENV:Body>" 
SoapTest = SoapTest & "</SOAP-ENV:Envelope>" 
end function 

回答

3

這是可能使用HTTParty或任何其他HTTP客戶端,但我不會推薦它。您必須手動構建和解構SOAP信封和對象。

而是嘗試使用Savon庫。雖然相當新,但它似乎是SOAP的首選模塊,而不是歷史悠久的soap4r。

+0

謝謝我一直在尋找薩翁的文檔,它是'簡短'!我想我只需要安裝它並嘗試一下。無論如何感謝指導。 – nexar 2010-10-29 15:38:41