Frage

Ich mache eine E-Commerce-Lösung in ASP.NET, die verwendet Website-Zahlungsstandard von PayPal Service.Gleichzeitig nutze ich einen von ihnen angebotenen Dienst (Zahlungsdatenübertragung), das Ihnen Nachbestellungsinformationen sendet, nachdem ein Benutzer eine Zahlung abgeschlossen hat.Als letztes muss ich die POST-Anfrage von ihnen analysieren und die darin enthaltenen Informationen beibehalten.Der Inhalt der HTTP-Anfrage hat folgende Form:

ERFOLG
Vorname=Jane+Doe
last_name=Smith
payment_status=Abgeschlossen
payer_email=janedoesmith%40hotmail.com
payment_brutto=3,99
mc_currency=USD
custom=Für+den+Kauf+des+seltenen+Buches+Green+Eggs+%26+Ham

Grundsätzlich möchte ich diese Informationen analysieren und etwas Sinnvolles tun, z. B. sie per E-Mail senden oder in der Datenbank speichern.Meine Frage ist, was der richtige Ansatz zum Parsen von HTTP-Rohdaten in ASP.NET ist, und nicht, wie das Parsen selbst durchgeführt wird.

War es hilfreich?

Lösung

So etwas in der Art wird in Ihrem Onload-Event platziert.

if (Request.RequestType == "POST")
{
    using (StreamReader sr = new StreamReader(Request.InputStream))
    {
        if (sr.ReadLine() == "SUCCESS")
        {
            /* Do your parsing here */
        }
    }
}

Beachten Sie jedoch, dass sie möglicherweise eine besondere Antwort auf (z. B.nicht Ihre vollständige Webseite), also könnten Sie so etwas tun, nachdem Sie mit dem Parsen fertig sind.

Response.Clear();
Response.ContentType = "text/plain";
Response.Write("Thanks!");
Response.End();

Aktualisieren:Dies sollte in einer generischen Handlerdatei (.ashx) erfolgen, um einen großen Overhead durch das Seitenmodell zu vermeiden.Kasse Dieser Artikel Weitere Informationen zu .ashx-Dateien finden Sie hier

Andere Tipps

Benutze ein IHttpHandler und vermeiden Sie den Overhead des Seitenmodells (den Sie nicht benötigen), aber verwenden Sie Request.Form, um die Werte abzurufen, damit Sie Namen-Wert-Paare nicht selbst analysieren müssen.Stellen Sie sich einfach vor, Sie verwenden PHP oder Classic ASP (oder ASP.NET MVC).;)

Ich würde dringend empfehlen, jede Anfrage in einer Datei zu speichern.

Auf diese Weise können Sie später jederzeit auf den eigentlichen Inhalt zurückgreifen.Sie können mir später danken, wenn Sie das feindselige, koi-8-codierte finden, [...], was auch immer Ihren Parser aus der Fassung gebracht hat ...

Wenn die eingehenden Daten in einem Standard-Formular-codierten POST-Format vorliegen, erhalten Sie mit dem Request.Form-Array alle Daten auf eine benutzerfreundliche Art und Weise.

Wenn nicht, sehe ich keinen anderen Weg als die Verwendung von Request.InputStream.

Wenn ich Ihre Frage richtig verstehe, denke ich, dass Sie danach suchen InputStream-Eigenschaft auf dem Request-Objekt.Beachten Sie, dass es sich hierbei um einen Firehose-Stream handelt und Sie ihn daher nicht zurücksetzen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top