Procedura: Richiedere dati con la classe WebRequestHow to: Request Data Using the WebRequest Class

La procedura seguente descrive i passaggi necessari per richiedere una risorsa da un server, ad esempio, una pagina Web o un file.The following procedure describes the steps used to request a resource from a server, for example, a Web page or file. La risorsa deve essere identificata da un URI.The resource must be identified by a URI.

Per richiedere dati da un server hostTo request data from a host server

  1. Creare un'istanza di WebRequest chiamando Create con l'URI della risorsa.Create a WebRequest instance by calling Create with the URI of the resource.

    WebRequest request = WebRequest.Create("http://www.contoso.com/");  
    
    Dim request as WebRequest = WebRequest.Create("http://www.contoso.com/")  
    

    Nota

    .NET Framework fornisce le classi specifiche del protocollo derivate da WebRequest e WebResponse per gli URI che iniziano con "http:", "https:", "ftp:" e "file:".The .NET Framework provides protocol-specific classes derived from WebRequest and WebResponse for URIs that begin with "http:", "https:'', "ftp:", and "file:". Per accedere alle risorse con altri protocolli, è necessario implementare classi specifiche del protocollo che derivano da WebRequest e WebResponse.To access resources using other protocols, you must implement protocol-specific classes that derive from WebRequest and WebResponse. Per altre informazioni, vedere Programmazione di protocolli di collegamento.For more information, see Programming Pluggable Protocols .

  2. Impostare i valori di proprietà necessari in WebRequest.Set any property values that you need in the WebRequest. Per abilitare l'autenticazione, ad esempio, impostare la proprietà Credentials su un'istanza della classe NetworkCredential.For example, to enable authentication, set the Credentials property to an instance of the NetworkCredential class.

    request.Credentials = CredentialCache.DefaultCredentials;  
    
    request.Credentials = CredentialCache.DefaultCredentials  
    

    Nella maggior parte dei casi, la classe WebRequest è sufficiente per la ricezione di dati.In most cases, the WebRequest class is sufficient to receive data. Tuttavia, se è necessario impostare le proprietà specifiche del protocollo, è necessario eseguire il cast di WebRequest sul tipo specifico del protocollo.However, if you need to set protocol-specific properties, you must cast the WebRequest to the protocol-specific type. Ad esempio, per accedere alle proprietà specifiche di HTTP di HttpWebRequest, eseguire il cast di WebRequest su un riferimento HttpWebRequest.For example, to access the HTTP-specific properties of HttpWebRequest, cast the WebRequest to an HttpWebRequest reference. L'esempio di codice seguente mostra come impostare la proprietà UserAgent specifica di HTTP.The following code example shows how to set the HTTP-specific UserAgent property.

    ((HttpWebRequest)request).UserAgent = ".NET Framework Example Client";  
    
    Ctype(request,HttpWebRequest).UserAgent = ".NET Framework Example Client"  
    
  3. Per inviare la richiesta al server, chiamare GetResponse.To send the request to the server, call GetResponse. Il tipo effettivo dell'oggetto WebResponse restituito è determinato dallo schema dell'URI richiesto.The actual type of the returned WebResponse object is determined by the scheme of the requested URI.

    WebResponse response = request.GetResponse();  
    
    Dim response As WebResponse = request.GetResponse()  
    

    Nota

    Dopo aver finito di usare un oggetto WebResponse, è necessario chiuderlo chiamando il metodo Close.After you are finished with a WebResponse object, you must close it by calling the Close method. In alternativa, se è stato usato il flusso di risposta dall'oggetto risposta, è possibile chiudere il flusso tramite la chiamata del metodo Stream.Close.Alternatively, if you have gotten the response stream from the response object, you can close the stream by calling the Stream.Close method. Se non si chiude la risposta o il flusso, l'applicazione può esaurire le connessioni al server e non essere più in grado di elaborare ulteriori richieste.If you do not close either the response or the stream, your application can run out of connections to the server and become unable to process additional requests.

  4. È possibile accedere alle proprietà di WebResponse oppure eseguire il cast di WebResponse su un'istanza specifica del protocollo per leggere le proprietà specifiche del protocollo.You can access the properties of the WebResponse or cast the WebResponse to a protocol-specific instance to read protocol-specific properties. Ad esempio, per accedere alle proprietà specifiche di HTTP di HttpWebResponse, eseguire il cast di WebResponse su un riferimento HttpWebResponse.For example, to access the HTTP-specific properties of HttpWebResponse, cast the WebResponse to a HttpWebResponse reference. L'esempio di codice seguente mostra come visualizzare le informazioni sullo stato inviate con una risposta.The following code example shows how to display the status information sent with a response.

    Console.WriteLine (((HttpWebResponse)response).StatusDescription);  
    
    Console.WriteLine(CType(response,HttpWebResponse).StatusDescription)  
    
  5. Per ottenere il flusso contenente i dati di risposta inviati dal server, usare il metodo GetResponseStream di WebResponse.To get the stream containing response data sent by the server, use the GetResponseStream method of the WebResponse.

    Stream dataStream = response.GetResponseStream();  
    
    Dim dataStream As Stream = response.GetResponseStream()  
    
  6. Dopo la lettura dei dati dalla risposta, è necessario chiudere il flusso di risposta tramite il metodo Stream.Close oppure chiudere la risposta tramite il metodo WebResponse.Close.After reading the data from the response, you must either close the response stream using the Stream.Close method or close the response using the WebResponse.Close method. Non è necessario chiamare il metodo Close sia sul flusso di risposta che su WebResponse, ma non si tratta di un'operazione che può causare danni.It is not necessary to call the Close method on both the response stream and the WebResponse, but doing so is not harmful. WebResponse.Close chiama Stream.Close alla chiusura della risposta.WebResponse.Close calls Stream.Close when closing the response.

    response.Close();  
    
    response.Close()  
    

EsempioExample

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

namespace Examples.System.Net  
{  
    public class WebRequestGetExample  
    {  
        public static void Main()  
        {  
            // Create a request for the URL.   
            WebRequest request = WebRequest.Create(  
              "http://www.contoso.com/default.html");  
            // If required by the server, set the credentials.  
            request.Credentials = CredentialCache.DefaultCredentials;  
            // Get the response.  
            WebResponse response = request.GetResponse();  
            // Display the status.  
            Console.WriteLine (((HttpWebResponse)response).StatusDescription);  
            // Get the stream containing content returned by the server.  
            Stream dataStream = response.GetResponseStream();  
            // Open the stream using a StreamReader for easy access.  
            StreamReader reader = new StreamReader(dataStream);  
            // Read the content.  
            string responseFromServer = reader.ReadToEnd();  
            // Display the content.  
            Console.WriteLine(responseFromServer);  
            // Clean up the streams and the response.  
            reader.Close();  
            response.Close();  
        }  
    }  
}  
Imports System  
Imports System.IO  
Imports System.Net  
Imports System.Text  
Namespace Examples.System.Net  
    Public Class WebRequestGetExample  

        Public Shared Sub Main()  
            ' Create a request for the URL.   
            Dim request As WebRequest = _  
              WebRequest.Create("http://www.contoso.com/default.html")  
            ' If required by the server, set the credentials.  
            request.Credentials = CredentialCache.DefaultCredentials  
            ' Get the response.  
            Dim response As WebResponse = request.GetResponse()  
            ' Display the status.  
            Console.WriteLine(CType(response,HttpWebResponse).StatusDescription)  
            ' Get the stream containing content returned by the server.  
            Dim dataStream As Stream = response.GetResponseStream()  
            ' Open the stream using a StreamReader for easy access.  
            Dim reader As New StreamReader(dataStream)  
            ' Read the content.  
            Dim responseFromServer As String = reader.ReadToEnd()  
            ' Display the content.  
            Console.WriteLine(responseFromServer)  
            ' Clean up the streams and the response.  
            reader.Close()  
            response.Close()  
        End Sub   
    End Class   
End Namespace  

Vedere ancheSee Also

Creazione di richieste InternetCreating Internet Requests
Uso di flussi nella reteUsing Streams on the Network
Accesso a Internet con un proxyAccessing the Internet Through a Proxy
Richiesta di datiRequesting Data
Procedura: Inviare dati con la classe WebRequestHow to: Send Data Using the WebRequest Class