我正在尝试将以下数据POST
发送到Android上的Rails服务器(在WebRick上运行)。
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<data>
<email>email.test@name.com</email>
<password>APassw0rd</password>
<remember_me>1</remember_me>
</data>
现在,有趣的是这些数据永远不会出现在控制器的params
字段中。
Webrick不输出任何解析错误。 (我想如果它收到POST
没有附加数据,它会发错:
Started POST "/users/sign_in.xml" for 192.168.1.94 at 2012-12-14 17:33:20 +0100
Processing by Users::SessionController#create as XML
Completed 500 Internal Server Error in 22643ms
我还发现request.env
变量中没有数据痕迹。实际上,我在转储字段中看不到HTTP_BODY
。怎么能看到请求的原始主体?如果收到POST
没有附加数据,webrick真的不会抱怨吗?
答案 0 :(得分:2)
request.env
会将数据显示为IO对象,因此您无法直接看到xml。
request.raw_post
应该返回原始数据。
要让rails尝试直接将您的xml解析为params哈希,您需要将请求的内容类型设置为application / xml。 '处理为xml'的东西意味着rails将尝试呈现xml响应,并且不一定与发布数据的格式有任何关系