Rails没有从HTTP请求中获取参数

时间:2012-12-14 16:21:18

标签: ruby-on-rails

我正在尝试将以下数据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真的不会抱怨吗?

1 个答案:

答案 0 :(得分:2)

request.env会将数据显示为IO对象,因此您无法直接看到xml。

request.raw_post应该返回原始数据。

要让rails尝试直接将您的xml解析为params哈希,您需要将请求的内容类型设置为application / xml。 '处理为xml'的东西意味着rails将尝试呈现xml响应,并且不一定与发布数据的格式有任何关系