2010-03-09 10 views
10

Ich habe Probleme beim Einrichten einer Pubsub-fähigen Abonnenten-App mit Rails. Ich habe den offenen Hub pubsubhubub.appspot.com abonniert und empfange Pings zum Endpunkt meiner Anwendung. (ab sofort habe ich einen Zähler erstellt, der jedes Mal, wenn der Endpunkt gepingt wird, inkrementiert wird). Aber ich bin nicht in der Lage zu verstehen, wie man die rohen POST-Körperinhalte aus dem POST extrahiert. Ich bin neu in Pubsub und bin gespannt darauf, damit zu experimentieren. Ich bin auf diesen Blogpost gestoßen, aber er ist nicht sprachspezifisch.Pubsubhubbub auf Schienen. Wie extrahiert man den rohen POST-Body-Inhalt aus der POST-Anfrage?


Quelle: Joseph Smarr: Implementierung von PubSubHubbub-Abonnentenunterstützung: Eine Schritt-für-Schritt-Anleitung. http://josephsmarr.com/2010/03/01/implementing-pubsubhubbub-subscriber-support-a-step-by-step-guide/

Jetzt sind Sie bereit für die Pay-out-magische Weise empfangen Pings aus der Äther jedes Mal, wenn der Blog, das Sie haben abonniert neuen Inhalt hat! Sie werden erhalten eingehende Anfragen an Ihren angegebene Callback-URL ohne zusätzliche Abfrageparameter hinzugefügt (das heißt Sie werden wissen, dass es ein Ping ist und nicht eine Überprüfung, weil es nicht jeder hub.mode Parameter enthalten sein wird). Stattdessen werden die neuen Einträge der abonnierten Feed direkt im POST Körper des Anforderung aufgenommen werden, mit der Bitte, Content-Type Anwendungs ​​/ atom + xml für ATOM-Feeds und application/rss + xml für RSS Feeds. Abhängig von Ihrer Programmierung Sprache der Wahl, müssen Sie herausfinden, wie die rohen POST Körper Inhalt extrahiert werden. Zum Beispiel, in PHP würden Sie den speziellen Dateinamen öffnen php: // Eingang, um es zu lesen.

Jede Hilfe würde sehr geschätzt werden.

+0

Was ist mit http://apidock.com/rails/ActionDispatch/Request/raw_post – hellvinz

+0

Ist die Antwort, wonach Sie suchen? – lulalala

Antwort

6

Sie haben nicht gesagt, aber ich nehme an, dass Sie Rails 3.x laufen?

Um den rohen POST-Body zu erhalten, verwenden Sie einfach request.raw_post in Ihrem Controller. Dies gibt Ihnen eine lange Zeichenfolge, die wie eine Anfrage Parameter Zeichenfolge aussieht: some_var = etwas & something_else = etwas_else ... was Sie dann analysieren können, um zu bekommen, was Sie wollen.

Allerdings sehen Sie sich Entwicklungsprotokolle für eine eingehende Anfrage und sehen, ob der Params-Hash ist keine bessere Option für Sie. Der Dienst sollte die Daten unter einem Variablennamen, wie zum Beispiel some_var, posten, und der params-Hash enthält ein params [: some_var], das nur diese Daten enthält. Du musst es nicht mit anderen Worten alleine ausgraben.