10

我在使用 rails 设置启用 pubsub 的订阅者应用程序时遇到问题。我目前订阅了开放集线器 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 参数)。相反,订阅提要的新条目将直接包含在请求的 POST 正文中,请求内容类型为 application/atom+xml 用于 ATOM 提要和 application/rss+xml 用于 RSS 提要。根据您选择的编程语言,您需要弄清楚如何提取原始 POST 正文内容。例如,在 PHP 中,您可以打开特殊文件名 php://input 来读取它。

任何帮助将不胜感激。

4

1 回答 1

6

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

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

但是,请查看传入请求的开发日志,看看 params 哈希是否对您来说不是更好的选择。服务应该在某个变量名下发布数据,例如上面的 some_var,并且 params 哈希将保存一个仅包含该数据的 params[:some_var]。换句话说,您无需自己挖掘它。

于 2012-06-25T09:47:26.260 回答