在Rails上的Pubsubhubbub。如何从POST请求中提取原始POST正文内容?

时间:2010-03-09 15:52:56

标签: ruby-on-rails ruby pubsubhubbub subscribe

我无法使用rails设置启用pubsub的订阅者应用。我目前订阅了open hub pubsubhubbub.appspot.com,并且正在接收ping应用程序的端点。 (截至目前,我已创建了一个计数器,每当端点被ping时,该计数器都会递增)。但我无法理解如何从POST中提取原始POST正文内容。我是pubsub的新手,我很想尝试它。我发现了这篇博文,但它并不是特定于语言的。


来源:Joseph Smarr:实施PubSubHubbub订阅者支持:分步指南。 http://josephsmarr.com/2010/03/01/implementing-pubsubhubbub-subscriber-support-a-step-by-step-guide/

  

现在你准备好了   支付魔法接收ping   你每次博客都是以太   订阅了新内容!你会   收到您的入境请求   指定的回调URL没有任何   添加了其他查询参数   (即你知道这是一个ping而不是   验证,因为没有   包括任何hub.mode参数)。   相反,新的条目   订阅的Feed将包含在内   直接在POST体内了   请求,请求Content-Type   应用程序/ atom + xml用于ATOM提要   和应用程序/ rss + xml的RSS   饲料。取决于您的编程   选择的语言,你需要   弄清楚如何提取原始POST   身体内容。例如,在PHP中   你会打开特殊的文件名   php://输入来读取它。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

您没有说,但我假设您正在运行Rails 3.x?

要获取原始POST主体,只需在控制器中使用request.raw_post即可。这将为您提供一个看起来像请求参数字符串的长字符串:some_var = something& something_else = something_else ...然后您可以解析它以获得您想要的内容。

但是,请查看传入请求的开发日志,并查看params散列是否不是更好的选择。服务应该在一些变量名下发布数据,例如上面的some_var,而params散列将包含仅包含该数据的params [:some_var]。换句话说,你不需要自己去挖掘它。