Domanda

Sto realizzando una soluzione di e-commerce in ASP.NET che utilizza Standard per i pagamenti su sito web di PayPal servizio.Insieme a ciò utilizzo un servizio che offrono (Trasferimento dati di pagamento) che ti restituisce le informazioni sull'ordine dopo che un utente ha completato un pagamento.L'ultima cosa che devo fare è analizzare la loro richiesta POST e rendere persistenti le informazioni in essa contenute.Il contenuto della richiesta HTTP è in questa forma:

SUCCESSO
nome=Jane+Doe
cognome=Smith
payment_status=Completato
payer_email=janedoesmith%40hotmail.com
pagamento_lordo=3,99
valuta_mc=USD
personalizzato=Per+l'acquisto+del+libro+raro+verde+uova+%26+prosciutto

Fondamentalmente voglio analizzare queste informazioni e fare qualcosa di significativo, come inviarle tramite posta elettronica o salvarle nel DB.La mia domanda è qual è l'approccio giusto per eseguire l'analisi dei dati HTTP non elaborati in ASP.NET, non come viene eseguita l'analisi stessa.

È stato utile?

Soluzione

Qualcosa di simile inserito nel tuo evento onload.

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

Tieni presente che potrebbero volere un tipo speciale di risposta a (ie;non la tua pagina web completa), quindi potresti fare qualcosa di simile dopo aver finito l'analisi.

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

Aggiornamento:questo dovrebbe essere fatto in un file Handler generico (.ashx) per evitare una grande quantità di sovraccarico dal modello di pagina.Guardare Questo articolo per ulteriori informazioni sui file .ashx

Altri suggerimenti

Usa un IHttpHandler ed evita il sovraccarico del modello Page (che non ti serve), ma usa Request.Form per ottenere i valori in modo da non dover analizzare tu stesso le coppie nome-valore.Fai semplicemente finta di essere in PHP o ASP classico (o ASP.NET MVC, del resto).;)

Consiglio vivamente di salvare ogni richiesta in un file.

In questo modo potrai sempre tornare al contenuto effettivo in un secondo momento.Potrai ringraziarmi più tardi, quando scoprirai che hostile-endian, codificato koi-8, [...], qualunque cosa abbia bloccato il tuo parser...

Bene, se i dati in arrivo sono in un formato POST codificato con modulo standard, l'utilizzo dell'array Request.Form ti fornirà tutti i dati in modo piacevole da gestire.

In caso contrario, non riesco a vedere altro che utilizzare Request.InputStream.

Se ho letto bene la tua domanda, penso che tu stia cercando il file Proprietà InputStream sull'oggetto Richiesta.Tieni presente che questo è un flusso antincendio, quindi non puoi ripristinarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top