Rails 如何在 Rails Controller 支持 SOAP?

alphaliu · 2013年09月29日 · 最后由 AlphaLiu 回复于 2013年09月29日 · 2883 次阅读

我需要写一个rails app, 然后要支持一个客户端发过来的soap数据,要能够解析并且回复,请问有什么技术能做到吗?? 客户端发过来的http数据大致如下:

POST /ftacs-acs/acs HTTP/1.1
Accept: */*
Host: acs-tech.com
Connection: Keep-Alive
Content-type: text/xml; charset=UTF-8
Content-length: 233
SOAPAction: ""

<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
 <SOAP-ENV:Header>
  <cwmp:ID SOAP-ENV:mustUnderstand="1">291188</cwmp:ID>
 </SOAP-ENV:Header>
 <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/">
  <cwmp:Inform>
   <DeviceId>
    <Manufacturer>Arcadyan</Manufacturer>
    <OUI>0E0908</OUI>
    <ProductClass>HGW</ProductClass>
    <SerialNumber>JM20130922</SerialNumber>
   </DeviceId>
  </cwmp:Inform>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

目前我想到的就是在ftacs-acs/acs这个controller里面支持解析这么一大串数据,但是不知道要怎么解析,求教一下各位,谢谢。

共收到 7 条回复

#1楼 @Rei 多谢Rei了,我是第一次知道这个地址...

奥,不过你好像是要做 soap server?这个分类大多数是 client。

如果没有就用 nokogiri 一类 xml 解析器分析了。

我前几天也做了一些这个方面的,服务端用的是wash_out , 商户端用savon 都比较好用

https://github.com/inossidabile/wash_out

搜了一下这个可以用来做 server

#3楼 @Rei 是的,应该算server,因为现在这个客户端会向某个url post soap的数据,所以我想把这个url作为是一个controller的action,在action里面解析数据会比较好。然后action还要回复soap数据给这个客户端。

#4楼 @ZombieCoder@Rei了,我刚刚也搜到wash_out,先来研究一下

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册