如何在Sinatra中获取xml post请求参数?

时间:2011-10-18 09:08:09

标签: ruby sinatra

我有一个非常简单的Sinatra应用程序,只会在操作中注销params,然后我使用curl以xml格式发送post数据,但是sinatra没有得到解析的xml:

echo '<something>tyrael tong</something>' | curl -X POST -H 'Content-Type: text/xml' -d @- http://localhost:9528/status/update

我通过谷歌搜索没有解决方案。我想自己解析xml帖子数据吗?

4 个答案:

答案 0 :(得分:2)

试试这段代码 需要'plist'

post 'some/route'
 content_type :xml
 value=Plist::parse_xml(request.body)
end

答案 1 :(得分:2)

找一个机架解析器:https://github.com/achiu/rack-parser可以完成我想要的工作:将帖子体解析为参数。

P.S。并且需要将内容类型设置为“application / xml”

答案 2 :(得分:1)

是的,内容类型只是服务器如何处理它的提示。如果您的服务器可以接收说XML或JSON,则内容类型可以告诉您如何解析它。

答案 3 :(得分:0)

由于你的帖子消息的主体是一个xml,它不会被rails / sinatra解析。如果要完成解析,则需要更改要发送的数据格式,并将内容类型设置为“application / x-www-form-urlencoded”。然后Sinatra将解析该数据并将其放入params哈希。