方法: WebRequest クラスを使用してデータを要求するHow to: Request Data Using the WebRequest Class

次の手順では、たとえば、Web ページやファイルなどのリソースをサーバーから要求するための手順について説明します。The following procedure describes the steps used to request a resource from a server, for example, a Web page or file. リソースは URI で識別される必要があります。The resource must be identified by a URI.

ホスト サーバーからデータを要求するにはTo request data from a host server

  1. リソースの URI を指定して Create を呼び出して WebRequest インスタンスを作成します。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/")  
    

    注意

    .NET Framework は、"http:"、"https:'、"ftp:" および"file:" で始まる URI に対応する WebRequestWebResponse から派生したプロトコル固有のクラスを提供します。The .NET Framework provides protocol-specific classes derived from WebRequest and WebResponse for URIs that begin with "http:", "https:'', "ftp:", and "file:". その他のプロトコルを使用してリソースにアクセスするには、WebRequestWebResponse から派生したプロトコル固有のクラスを実装する必要があります。To access resources using other protocols, you must implement protocol-specific classes that derive from WebRequest and WebResponse. 詳細については、「Programming Pluggable Protocols」(プラグ可能なプロトコルのプログラミング) を参照してください。For more information, see Programming Pluggable Protocols .

  2. WebRequest で必要なプロパティの値を設定します。Set any property values that you need in the WebRequest. たとえば、認証を有効にするには、Credentials プロパティを 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  
    

    ほとんどの場合、データを受信するには、WebRequest クラスで十分です。In most cases, the WebRequest class is sufficient to receive data. ただし、プロトコル固有のプロパティを設定する必要がある場合、WebRequest をプロトコル固有の型にキャストする必要があります。However, if you need to set protocol-specific properties, you must cast the WebRequest to the protocol-specific type. たとえば、HttpWebRequest の HTTP 固有のプロパティにアクセスするには、WebRequestHttpWebRequest 参照にキャストします。For example, to access the HTTP-specific properties of HttpWebRequest, cast the WebRequest to an HttpWebRequest reference. 次のコードの例は、HTTP 固有の UserAgent プロパティを設定する方法を示しています。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. サーバーに要求を送信するには、GetResponse を呼び出します。To send the request to the server, call GetResponse. 返された WebResponse オブジェクトの実際の型は、要求された URI のスキームで決定されます。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()  
    

    注意

    WebResponse オブジェクトの使用が完了した後、Close メソッドを呼び出して終了する必要があります。After you are finished with a WebResponse object, you must close it by calling the Close method. 代わりに、応答オブジェクトから応答ストリームを取得した場合、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. 応答またはストリームのいずれかを閉じない場合、アプリケーションからサーバーへの接続が不足し、追加の要求を処理できなくなります。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. WebResponse のプロパティにアクセスするか、または WebResponse をプロトコル固有インスタンスにキャストして、プロトコル固有のプロパティを読み取ることができます。You can access the properties of the WebResponse or cast the WebResponse to a protocol-specific instance to read protocol-specific properties. たとえば、HttpWebResponse の HTTP 固有のプロパティにアクセスするには、WebResponseHttpWebResponse 参照にキャストします。For example, to access the HTTP-specific properties of HttpWebResponse, cast the WebResponse to a HttpWebResponse reference. 次のコード例では、応答で送信される状態情報を表示する方法を示します。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. サーバーによって送信された応答データを格納しているストリームを取得するには、WebResponseGetResponseStream メソッドを使用します。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. 応答からのデータの読み取り後、Stream.Close メソッドを使用して応答ストリームを閉じるか、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. 応答ストリームと WebResponse の両方で Close メソッドを呼び出す必要はありませんが、そのようにしても問題はありません。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 は応答を閉じるときに Stream.Close を呼び出します。WebResponse.Close calls Stream.Close when closing the response.

    response.Close();  
    
    response.Close()  
    

Example

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  

参照See Also

インターネット要求の作成Creating Internet Requests
ネットワーク上でストリームを使用するUsing Streams on the Network
プロキシを介したインターネットへのアクセスAccessing the Internet Through a Proxy
データの要求Requesting Data
方法: WebRequest クラスを使用してデータを送信するHow to: Send Data Using the WebRequest Class