Come simulare la richiesta POST HTTP del browser e acquisire i risultati in C #

Diciamo che abbiamo una pagina web con un modulo di input di ricerca, che invia i dati al server tramite HTTP GET. Questo significa che il server riceve i dati di ricerca tramite stringhe di query. L’utente può vedere l’URL e può anche inizializzare questa richiesta da solo (tramite URL + stringhe di query).

Lo sappiamo tutti. Ecco la domanda

Cosa succede se questa pagina Web invia dati al server tramite HTTP POST? In che modo l’utente può inizializzare questa richiesta da solo?

Bene, so come catturare POST HTTP (ecco perché gli sniffer di rete sono per), ma come posso simulare questa richiesta HTTP POST da solo in un codice C #?

Puoi dare un’occhiata alla class WebClient . Ti consente di inviare dati a un URL arbitrario:

using (var client = new WebClient()) { var dataToPost = Encoding.Default.GetBytes("param1=value1&param2=value2"); var result = client.UploadData("http://example.com", "POST", dataToPost); // do something with the result } 

Genera la seguente richiesta:

 POST / HTTP/1.1 Host: example.com Content-Length: 27 Expect: 100-continue Connection: Keep-Alive param1=value1&param2=value2