Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come effettuare una richiesta per recuperare una GET 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.NetSystem.IO
Requisiti
L'elenco seguente illustra l'hardware e il software consigliati necessari:
- Finestre
- Visual Studio
Note
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 capacità è stata fornita ai programmatori di Visual Basic tramite il controllo 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 di 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 determinata richiesta. 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
Systemspazio dei nomi, loSystem.NETspazio dei nomi e loSystem.IOspazio dei nomi (per gli oggetti flusso) in modo da non dover qualificare le dichiarazioni di 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 oggetto
WebRequest. È possibile eseguire questa operazione solo tramite il metodo staticoCreatedellaWebRequestclasse (nuovoWebRequestoggetto non valido). Specificare l'URL di destinazione come parte della chiamata aCreateper 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
WebProxyoggetto e quindi fornire questo oggetto all'oggettoWebRequest. L'oggettoWebProxyha 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 desidera utilizzare le impostazioni già configurate in Internet Explorer, è possibile utilizzare il
GetDefaultProxymetodo statico dellaWebProxyclasse .wrGETURL.Proxy = WebProxy.GetDefaultProxy();Note
In Visual Studio 2005 o Visual Studio 2008 il
GetDefaultProxymetodo funziona. Tuttavia, questo metodo è stato deprecato. Per altre informazioni sulGetDefaultProxymetodo in .NET Framework 2.0, vedere Elenco di tipi/membri obsoleti di .NET Framework V2.0 (per assembly).Dopo aver completato la configurazione della richiesta impostando l'URL di destinazione e fornendo le informazioni sul proxy applicabili, è possibile usare la richiesta per ottenere un
Streamoggetto che corrisponde alla risposta per la richiesta.Stream objStream; objStream = wrGETURL.GetResponse().GetResponseStream();Quando si dispone del flusso di risposta, è possibile usare il flusso come si userebbe qualsiasi altro flusso ed è possibile leggere il contenuto della riga di flusso per riga o anche tutti contemporaneamente. Il ciclo di codice di esempio seguente legge il flusso una riga alla volta fino a quando il
ReadLinemetodo non restituisce Null, eseguendo l'output di 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 sul proxy per l'ambiente (vedere i passaggi 7 e 8). Verranno visualizzate righe di contenuto HTML numerate e restituite nella console.
Elenco 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();
}
}
}