2

我正在尝试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在转储字段中没有看到。怎样才能看到请求的原始正文?如果 webrick 收到POST没有附加数据的,它真的不会抱怨吗?

4

1 回答 1

2

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

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

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

于 2012-12-14T16:44:19.927 回答