Ruby on rails 我可以使用httparty或weary使用SOAP web服务吗?

Ruby on rails 我可以使用httparty或weary使用SOAP web服务吗?,ruby-on-rails,soap,httparty,Ruby On Rails,Soap,Httparty,我目前正在从事一个ROR项目,该项目需要使用一些基于SOAP的web服务。我对使用web服务的了解近乎“危险”。该站点提供的示例是使用asp和XMLHTTP发送似乎是封装在SOAP信封中的XML。XML中还包括身份验证信息。如果我单独构建XML,我可以使用HTTParty发送它并返回响应吗 如果HTTParty不是答案,那么任何其他建议都将非常有用。下面是提供的asp示例 const SoapServer = "http://demo.touricoholidays.com/ws/HotelsS

我目前正在从事一个ROR项目,该项目需要使用一些基于SOAP的web服务。我对使用web服务的了解近乎“危险”。该站点提供的示例是使用asp和XMLHTTP发送似乎是封装在SOAP信封中的XML。XML中还包括身份验证信息。如果我单独构建XML,我可以使用HTTParty发送它并返回响应吗

如果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
const SoapServer=”http://demo.touricoholidays.com/ws/HotelsService.asmx"
设置xmldom=server.CreateObject(“Microsoft.xmldom”)
设置xmlhttp=server.CreateObject(“Microsoft.xmlhttp”)
xmlhttp.open“POST”,SoapServer,false
xmlhttp.setRequestHeader“内容类型”、“文本/xml”
xmlhttp.setRequestHeader“SOAPAction”http://tourico.com/webservices/GetHotelDetails"
send(SoapTest)
如果xmlhttp.Status=200,则“405”表示错误,200表示正常。你知道为什么。
设置xmldom=xmlhttp.responseXML
write(xmldom.xml)
其他的
回答。写下(“没有工作
”) Response.Write(“status=“&xmlhttp.status”) Response.write(“
”&xmlhttp.statusText) Response.Write(“
”&Request.ServerVariables(“所有HTTP”)) 如果结束 设置xmlhttp=nothing 设置xmldom=nothing 函数SoapTest() SoapTest=SoapTest&“” SoapTest=SoapTest&“” SoapTest=SoapTest&“” SoapTest=SoapTest和“ABC” SoapTest=SoapTest&“123” SoapTest=SoapTest&“” SoapTest=SoapTest&“” SoapTest=SoapTest&“” SoapTest=SoapTest&“” SoapTest=SoapTest&“2205” SoapTest=SoapTest&“localTgsProvider” SoapTest=SoapTest&“” SoapTest=SoapTest&“” SoapTest=SoapTest&“” 端函数
可以使用HTTParty或任何其他HTTP客户端,但我不推荐使用。您必须手动构造和解构SOAP信封和对象


相反,试试图书馆。尽管这是一个相当新的模块,但它似乎是SOAP的首选模块,而不是古老的soap4r。

谢谢,我一直在查看Savon的文档,它很“简短”!我想我只需要安装并试用一下。不管怎样,谢谢你的指导。