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.
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
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). ;)
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 ...
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.
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.
Tags und Links asp.net http e-commerce