2010-03-09 2 views
10

У меня возникли проблемы с настройкой абонентского приложения с поддержкой pubsub с использованием рельсов. В настоящее время я подписался на открытый хаб pubsubhubbub.appspot.com и получаю пинги в конечной точке моего приложения. (на данный момент я создал счетчик, который увеличивается каждый раз, когда конечная точка пингируется). Но я не могу понять, как извлечь содержимое исходного POST-содержимого из POST. Я новичок в pubsub и очень хочу экспериментировать с ним. Я наткнулся на это сообщение в блоге, но это не язык.Pubsubhubbub на рельсах. Как извлечь содержимое исходного POST-содержимого из запроса POST?


Источник: Джозеф Smarr: Абонентская поддержка Реализация PubSubHubbub: руководство шаг за шагом. http://josephsmarr.com/2010/03/01/implementing-pubsubhubbub-subscriber-support-a-step-by-step-guide/

Теперь вы готовы к платить из-волшебно, получающих пинги от эфира каждый раз, когда вы имеете блог подписался имеет новое содержание! Вы будете получать входящие запросы на ваш указанного обратного вызова URL без каких-либо дополнительных параметров запроса добавили (то есть вы будете знать, что это пинг и не проверки, потому что не будет любой параметр hub.mode включен). Вместо этого новые данные о подписного корма будут включены непосредственно в теле поста запроса, с запросом Content-Type приложения/атом + XML для ATOM каналы и приложения/RSS + XML для RSS корма. В зависимости от вашего программирования Вы можете выбрать язык выяснить, как извлечь необработанный POST содержание тела. Например, в PHP вы бы открыли специальное имя файла php: //, чтобы прочитать его.

Любая помощь была бы принята с благодарностью.

+0

Что относительно http://apidock.com/rails/ActionDispatch/Request/raw_post – hellvinz

+0

Ответ, что вы после? – lulalala

ответ

6

Вы не сказали, но я предполагаю, что вы используете Rails 3.x?

Чтобы получить необработанное тело POST, вы просто используете request.raw_post в своем контроллере. Это даст вам длинную строку, которая выглядит как строка параметров запроса: some_var = something & something_else = something_else ... которую вы можете проанализировать, чтобы получить то, что вы хотите.

Однако просмотрите журналы разработки для входящего запроса и посмотрите, не является ли параметр hash параметров более удобным для вас вариантом. Служба должна публиковать данные под некоторым именем переменной, например some_var, и хеш params будет содержать параметры [: some_var], содержащие только эти данные. Другими словами, вам не нужно самостоятельно выкапывать его.

Смежные вопросы