Raw-HTTP-Anfrage-Inhalt verarbeiten

7

Ich mache eine E-Commerce-Lösung in ASP.NET, die den Website-Zahlungsstandard von PayPal nutzt. Zusammen mit diesem benutze ich einen Service, den sie anbieten ( Zahlungsdatenübertragung ), der dir die Bestellinformationen zurückschickt, nachdem ein Benutzer es getan hat eine Zahlung abgeschlossen. Die letzte Sache, die ich tun muss, ist, die POST-Anfrage von ihnen zu analysieren und die Informationen darin zu behalten. Der Inhalt der HTTP-Anfrage hat folgendes Format:

  

Erfolg   first_name = Jane + Doe
  letzter_Name = Smith
  payment_status = Abgeschlossen
  payer_email = janedoesmith% 40hotmail.com
  payment_gross = 3.99
  mc_currency = USD
  custom = Für + den + Kauf + von + dem + seltenen + Buch + Grün + Eier +% 26 + Schinken

Grundsätzlich möchte ich diese Informationen parsen und etwas sinnvolles tun, zB per E-Mail versenden oder in der Datenbank speichern. Meine Frage ist, was der richtige Ansatz ist, um Roh-HTTP-Daten in ASP.NET zu analysieren, nicht wie das Parsen selbst durchgeführt wird.

    
Slavo 21.08.2008, 15:30
quelle

5 Antworten

14

So etwas wird in Ihrem onload-Ereignis platziert.

%Vor%

Wohlgemerkt, dass sie eine spezielle Antwort wünschen (dh nicht Ihre gesamte Webseite), also könnten Sie so etwas tun, nachdem Sie mit dem Parsen fertig sind.

%Vor%

Update: Dies sollte in einer generischen Handler (.ashx) -Datei erfolgen, um einen hohen Aufwand des Seitenmodells zu vermeiden. In diesem Artikel finden Sie weitere Informationen zu .ashx-Dateien

    
Markus Olsson 21.08.2008, 15:39
quelle
3

Verwenden Sie einen IHttpHandler und vermeiden Sie den Seitenmodell-Overhead (den Sie nicht verwenden nicht benötigen, aber verwenden Sie Request.Form, um die Werte zu erhalten, so dass Sie die Namen-Wert-Paare nicht selbst analysieren müssen. Tun Sie einfach so, als wären Sie in PHP oder Classic ASP (oder ASP.NET MVC). ;)

    
Mark Brackett 21.08.2008 17:33
quelle
2

Ich empfehle dringend, jede Anfrage in einer Datei zu speichern.

Auf diese Weise können Sie später immer wieder zum eigentlichen Inhalt zurückkehren. Du kannst mir später danken, wenn du diesen Feind-Endian, koi-8-kodiert, findest, [...] was auch immer das war, was deinen Parser ratlos gemacht hat ...

    
Anders Eurenius 22.08.2008 09:15
quelle
1

Nun, wenn die eingehenden Daten in einem Standard-Format codierten POST-Format vorliegen, dann gibt Ihnen die Verwendung des Request.Form-Arrays alle Daten in einer netten Art und Weise.

Wenn nicht, kann ich keinen anderen Weg sehen, als Request.InputStream zu benutzen.

    
samjudson 21.08.2008 15:35
quelle
0

Wenn ich Ihre Frage richtig lese, denke ich, dass Sie nach der InputStream-Eigenschaft für das Request-Objekt. Beachten Sie, dass dies ein Firehose-Stream ist, so dass Sie ihn nicht zurücksetzen können.

    
Greg Hurlman 21.08.2008 15:32
quelle

Tags und Links