Home / Programmazione / C# - Asp.NET / C# POST WebRequest
Mattepuffo

C# POST WebRequest

C# POST WebRequest

In questo articolo avevamo visto che effettuare una WebRequest in C#.

Oggi vediamo come effettuare la stessa richiesta, ma inviando dati in POST.

Cambia poco, a parte il fatto che il metodo invierà dei dati al file remoto usando il metodo POST.

Quindi dovremmo fare alcune modifiche per codificare l'invio dei dati, e impostare il Method della richiesta.

Ecco qua un esempio:

        public static void launchService(string strFile)
        {
            string postData = "KEY=VALUE&KEY2=VALUE2";
            byte[] data = Encoding.UTF8.GetBytes(postData);
            const int maxLenght = 1024;
            var buf = new char[maxLenght];
            var req = (HttpWebRequest)WebRequest.Create("http://www.sito.it/" + strFile);
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = data.Length;
            using (var stream = req.GetRequestStream()) {
                stream.Write(data, 0, data.Length);
            }
            var res = (HttpWebResponse)req.GetResponse();
            using (var stream = res.GetResponseStream()) {
                using (var reader = new StreamReader(stream)) {
                    int count = reader.Read(buf, 0, maxLenght);
                    while (count > 0) {
                        string output = new String(buf, 0, count);
                        Console.WriteLine(output);
                        count = reader.Read(buf, 0, maxLenght);
                    }    
                }
            }
        }

Prima di tutto impostiamo i valori da passare; come vedete la sintassi è la stessa della query-string in GET.

Poi codifichiamo la stringa usando Encoding.UTF8.GetBytes.

Più sotto indichiamo il Method da usare (POST appunto).

Infine inviamo la richiesta e leggiamo la risposta (che dipende dal quello che il file remoto ovviamente).

Inoltre ho usato l'istruzione using, in modo da chiudere automaticamente le risorse aperte.

Direi che è tutto qua!

Ciao!!