Connessioni HTTP in .NET

In uno scorso articolo dedicato alle classi di rete del .NET framework, abbiamo parlato della risoluzione dei nomi tramite i server DNS, questa volta ci occuperemo delle connessioni con pagine web attraverso il protocollo HTTP. Le classi più importanti per la realizzazione di connessioni HTTP sono WebRequest e WebResponse. Queste due classi consentono di sfruttare in maniera semplice le caratteristiche delle connessioni HTTP. Vediamo un esempio in C# per la connessione con una pagina web facendo ritornare il documento HTML della web page.

using System;
using System.IO;
using System.Net;
using System.Text;

public class Corso
{
   static void Main(string[] args)
   {
        WebRequest wr = WebRequest.Create(http://www.rgpsoft.it);
        wr.Credentials = CredentialCache.DefaultCredentials;
        HttpWebResponse hwr = (HttpWebResponse)wr.GetResponse();
        Console.WriteLine(hwr.StatusDescription);
        Stream ds = hwr.GetResponseStream();
        StreamReader sr = new StreamReader(ds);
        string buffer = sr.ReadToEnd();
        Console.WriteLine(buffer);
        sr.Close();
        ds.Close();
        hwr.Close();

        Console.ReadKey();
   }
}

Lo stesso esmpio ma in linguaggio VB.NET

Imports System.Net
Imports System.IO
Imports System.Text

Module Corso
   Sub Main()
        Dim wr As WebRequest, hwr As HttpWebResponse
        Dim ds As Stream, sr As StreamReader, buffer As String

        wr = WebRequest.Create(http://www.rgpsoft.it)
        wr.Credentials = CredentialCache.DefaultCredentials
        hwr = wr.GetResponse()
        Console.WriteLine(hwr.StatusDescription)
        ds = hwr.GetResponseStream()
        sr = New StreamReader(ds)
        buffer = sr.ReadToEnd()
        Console.WriteLine(buffer)
        sr.Close()
        ds.Close()
        hwr.Close()

        Console.ReadKey()
   End Sub
End Module

Da notare che con queste due classi abbiamo il pieno supporto alle connessioni HTTP, perfino quelle tramite SSL, infatti attraverso WebRequest.Credentials è possibile ottenere l’accesso ad un web server che richiede autenticazione basic, digest, NTLM o Kerberos. Altra caratteristica che è possibile implementare attraverso le Net classes del framework è costituita dallo sfruttamento della proprietà Pipelined, quindi inviare più richieste senza dover attendere la risposta del server; possiamo anche indicare l’utilizzo di un server proxy per ottenere la connessione.

<< Lezione Precedente – Inizio CorsoIndice LezioniLezione Successiva >>

Di Giampaolo Rossi

Sviluppatore software da oltre 16 anni.