Uso di Visual C# per effettuare una richiesta GET
Questo articolo descrive come effettuare una GET
richiesta di recupero di una pagina Web da Internet tramite Visual C#.
Versione originale del prodotto: Visual Studio
Numero KB originale: 307023
Riepilogo
Microsoft .NET Framework include molte classi utili per la rete, inclusa la possibilità di effettuare richieste Web.
Questo articolo fa riferimento agli spazi dei nomi della libreria di classi .NET Framework seguenti:
System.Net
System.IO
Requisiti
L'elenco seguente descrive l'hardware e il software consigliati necessari:
- Windows
- Visual Studio
Nota
Se si è dietro un server proxy, è necessario disporre di un indirizzo Web interno o di valori proxy statici (vedere i passaggi 5 e 6 della sezione Richiedere una pagina Web ) per testare il codice in questo articolo.
Richiedere una pagina Web
La possibilità di recuperare una pagina Web a livello di codice ha molti usi. Questa funzionalità è stata fornita ai programmatori di Visual Basic tramite Il controllo di trasferimento Internet o tramite codifica diretta sulle API Windows Internet (WinINet).
In .NET gli System.Net
spazi dei nomi forniscono la WebRequest
classe per incapsulare una richiesta per una risorsa Internet e la WebResponse
classe per rappresentare i dati restituiti.
Usando questi oggetti, è possibile ottenere un flusso che rappresenta la risposta per una richiesta specifica. Quando si dispone di un flusso, è possibile leggere la risposta esattamente come si legge da un file di testo locale o da qualsiasi altra origine.
Per effettuare una GET
richiesta, seguire questa procedura:
Avviare Visual Studio.
Creare una nuova applicazione console in Visual C#. Visual Studio crea automaticamente una classe pubblica e un metodo vuoto
Main
.Verificare che il progetto faccia riferimento almeno System.dll.
Usare la direttiva using per lo
System
spazio dei nomi, loSystem.NET
spazio dei nomi e loSystem.IO
spazio dei nomi (per gli oggetti di flusso) in modo che non sia necessario qualificare le dichiarazioni da questi spazi dei nomi più avanti nel codice. Queste istruzioni devono essere usate prima di qualsiasi altra dichiarazione.using System; using System.Net; using System.IO;
Per questo esempio, impostare come hardcoded l'URL come variabile. In un sistema reale è probabile che questo valore venga ricevuto come parametro per una funzione o come argomento della riga di comando per un'applicazione console.
string sURL; sURL = "http://www.contoso.com";
Creare un nuovo
WebRequest
oggetto. È possibile eseguire questa operazione solo tramite il metodo staticoCreate
dellaWebRequest
classe (nuovoWebRequest
oggetto non valido). Specificare l'URL di destinazione come parte della chiamata a perCreate
inizializzare l'oggetto con questo valore.WebRequest wrGETURL; wrGETURL = WebRequest.Create(sURL);
Se si desidera richiedere URL all'esterno della rete locale e si è dietro un proxy, è necessario creare un
WebProxy
oggetto e quindi fornire questo oggetto all'oggettoWebRequest
. L'oggettoWebProxy
dispone di un'ampia gamma di proprietà, che non sono impostate nel codice di esempio seguente, che consentono di specificare le stesse informazioni di base che è possibile impostare tramite le impostazioni proxy in Internet Explorer.WebProxy myProxy = new WebProxy("myproxy",80); myProxy.BypassProxyOnLocal = true; wrGETURL.Proxy = myProxy;
Se si vogliono usare le impostazioni già configurate in Internet Explorer, è possibile usare il
GetDefaultProxy
metodo statico dellaWebProxy
classe .wrGETURL.Proxy = WebProxy.GetDefaultProxy();
Nota
In Visual Studio 2005 o Visual Studio 2008, il
GetDefaultProxy
metodo funziona. Tuttavia, questo metodo è stato deprecato. Per altre informazioni sul metodo in .NET Framework 2.0, vedere .NET Framework V2.0 Obsolete Type/Member List (By Assembly).For more information about theGetDefaultProxy
method in the .NET Framework 2.0, see .NET Framework V2.0 Obsolete Type/Member List (By Assembly).Dopo aver completato la configurazione della richiesta impostando l'URL di destinazione e fornendo tutte le informazioni proxy applicabili, è possibile usare la richiesta per ottenere un
Stream
oggetto corrispondente alla risposta per la richiesta.Stream objStream; objStream = wrGETURL.GetResponse().GetResponseStream();
Quando si dispone del flusso di risposta, è possibile usare il flusso come qualsiasi altro flusso ed è possibile leggere il contenuto del flusso riga per riga, o anche tutti contemporaneamente. Il ciclo di codice di esempio seguente legge il flusso una riga alla volta fino a quando il
ReadLine
metodo non restituisce null, generando ogni 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();
Salvare ed eseguire il programma. Verificare di aver configurato correttamente le informazioni proxy per l'ambiente (vedere i passaggi 7 e 8). Verranno visualizzate righe di contenuto HTML numerato e restituito nella console.
Elenco di codice completo
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.contoso.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();
}
}
}
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per