HOW TO: Effettuare una richiesta GET utilizzando C# .NET


Nel presente articolo viene illustrata una versione beta di un prodotto Microsoft. Le informazioni contenute in questo articolo vengono fornite "nello stato in cui si trovano" e sono soggette a modifiche senza preavviso.

Per questo prodotto beta Microsoft non fornisce alcun tipo di supporto formale. Per informazioni su come ottenere supporto per una versione beta, consultare la documentazione fornita con i file del prodotto beta oppure visitare il sito Web da cui la versione del prodotto è stata scaricata.




Per la versione per Microsoft Visual Basic .NET di questo articolo, vedere .

Contenuto dell'attività


Sommario

Microsoft .NET Framework include molte classi che si rivelano particolarmente utili per le funzionalità di rete, tra cui la possibilità di eseguire richieste Web. In questo articolo viene illustrato come effettuare una semplice richiesta GET per recuperare una pagina Web da Internet.


Requisiti


Nell'elenco che segue vengono indicati l'hardware, il software, l'infrastruttura di rete e i Service Pack necessari:

  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Windows NT 4.0 Server.

  • Microsoft Visual Studio .NET.

NOTA: se ci si trova dietro a un server proxy, sarà necessario un indirizzo Web interno o valori proxy statici (vedere i passaggi 7 e 8) per verificare il codice riportato in questo articolo.


Richiedere una pagina Web


La possibilità di recuperare una pagina Web a livello di programmazione ha una vasta gamma di utilizzi. I programmatori che utilizzano Microsoft Visual Basic 6.0 possono eseguire tale operazione utilizzando il controllo Microsoft Internet Transfer o la codifica diretta tramite le API WinInet. In .NET gli spazi dei nomi
System.Net
forniscono la classe
WebRequest
per racchiudere una richiesta per una risorsa Internet e la classe
WebResponse
per rappresentare i dati restituiti. Utilizzando questi oggetti è possibile ottenere un flusso che rappresenta la risposta per una particolare richiesta. Una volta ottenuto tale flusso, leggere la risposta non sarà diverso da leggere un file di testo locale o un'altra origine.


Per effettuare una richiesta GET, attenersi alla seguente procedura:

  1. Aprire Visual Studio .NET.

  2. Creare una nuova applicazione console in Microsoft C#. Visual C# .NET crea una classe pubblica assieme a un metodo
    Main()
    vuoto.

  3. Assicurarsi nel progetto venga fatto riferimento almeno al file
    System.dll.

  4. Utilizzare l'istruzione
    using
    negli spazi dei nomi
    System,
    System.NET
    e
    System.IO
    (per gli oggetti flusso) in modo che in seguito non sia necessario qualificare dichiarazioni provenienti da questi spazi dei nomi nel codice. Queste istruzioni devono essere utilizzate prima di qualsiasi altra dichiarazione.

    using System;
    using System.Net;
    using System.IO;
  5. Per questo esempio, codificare solo l'URL in una variabile. In un sistema reale è probabile che questo valore venga ricevuto come parametro da una funzione o come argomento della riga di comando da un'applicazione console.

    string sURL;
    sURL = "http://www.microsoft.com";
  6. Creare un nuovo oggetto
    WebRequest. Ciò può essere eseguito solo tramite il metodo
    Create
    statico della classe
    WebRequest
    (non è invece possibile utilizzare la classe "New WebRequest"). Fornire l'URL di destinazione come parte della chiamata al metodo
    Create
    per inizializzare l'oggetto con questo valore.

    WebRequest wrGETURL;
    wrGETURL = WebRequest.Create(sURL);
  7. Se ci si trova dietro a un proxy sarà necessario creare un oggetto
    WebProxy
    e fornirlo al proprio oggetto
    WebRequest, se si desidera richiedere URL al di fuori della rete locale. L'oggetto
    WebProxy
    presenta una serie di proprietà, non impostate nel codice utilizzato in questo esempio, che consentono di specificare le stesse informazioni di base che è possibile impostare tramite le impostazioni proxy di Microsoft Internet Explorer.

    WebProxy myProxy = new WebProxy("myproxy",80);
    myProxy.BypassProxyOnLocal = true;

    wrGETURL.Proxy = myProxy;
  8. Se si desidera semplicemente utilizzare qualsiasi impostazione sia stata configurata in Internet Explorer, sarà possibile utilizzare il metodo statico
    GetDefaultProxy
    della classe
    WebProxy.

    wrGETURL.Proxy = WebProxy.GetDefaultProxy();
  9. Una volta impostata la richiesta con l'URL di destinazione e tutte le informazioni proxy applicabili, è possibile utilizzarla per ottenere un oggetto
    Stream
    corrispondente alla risposta alla propria richiesta.

    Stream objStream;
    objStream = wrGETURL.GetResponse().GetResponseStream();
  10. Una volta ottenuto un flusso di risposta, sarà possibile trattarlo come qualsiasi altro flusso, ad esempio il flusso derivante dall'apertura di un file di testo, e leggerne il contenuto riga per riga oppure tutto in una volta. Il ciclo riportato di seguito legge il flusso una riga per volta finché il metodo
    ReadLine
    non restituisce Null, visualizzando ciascuna riga nella console.

    StreamReader objReader = new StreamReader(objStream);

    string sLine = "";
    int i = 0;

    while (sLine!=null)
    {
    i++;
    sLine = objReader.ReadLine();
    if (sLine!=null)
    Console.WriteLine("{0}:{1}",i,sLine);
    }
    Console.ReadLine();
  11. Salvare e quindi eseguire il programma assicurandosi ai passaggi 7 e 8 di aver configurato correttamente le informazioni proxy per il proprio ambiente. Nella console dovrebbero essere visualizzate righe di contenuto HTML numerate.

Elenco completo del codice


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

namespace MakeAGETRequest_charp
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
string sURL;
sURL = "http://www.microsoft.com";

WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sURL);

WebProxy myProxy = new WebProxy("myproxy",80);
myProxy.BypassProxyOnLocal = true;

wrGETURL.Proxy = WebProxy.GetDefaultProxy();

Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();

StreamReader objReader = new StreamReader(objStream);

string sLine = "";
int i = 0;

while (sLine!=null)
{
i++;
sLine = objReader.ReadLine();
if (sLine!=null)
Console.WriteLine("{0}:{1}",i,sLine);
}
Console.ReadLine();
}
}
}
<BR/>
<BR/>





Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×