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

Shr*_*hna 10 ruby ruby-on-rails subscribe websub

我在使用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/

现在,每当您订阅的博客都有新内容时,您就已经准备好从以太网中获得付费的神奇接收!您将收到对指定回调URL的入站请求,而不会添加任何其他查询参数(即您将知道它是ping而不是验证,因为不会包含任何hub.mode参数).相反,订阅源的新条目将直接包含在请求的POST主体中,请求Content-Type of application/atom + xml for ATOM feed和application/rss + xml for RSS feeds.根据您选择的编程语言,您需要弄清楚如何提取原始POST正文内容.例如,在PHP中,您将打开特殊文件名php:// input来读取它.

任何帮助将不胜感激.

Jon*_*son 6

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

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

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