方法: WebRequest クラスを使用してデータを要求するHow to: Request data by using the WebRequest class

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

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

  1. リソースの URI を指定して WebRequest.Create を呼び出して WebRequest インスタンスを作成します。Create a WebRequest instance by calling WebRequest.Create with the URI of a resource. 次に例を示します。For example:

    WebRequest request = WebRequest.Create("https://docs.microsoft.com");
    
    Dim request as WebRequest = WebRequest.Create("https://docs.microsoft.com")
    

    注意

    .NET Framework は、http:https:ftp:file: で始まる URI に対応する WebRequestWebResponse クラスから派生したプロトコル固有のクラスを提供します。The .NET Framework provides protocol-specific classes derived from the WebRequest and WebResponse classes for URIs that begin with http:, https:, ftp:, and file:.

    プロトコル固有のプロパティを設定する必要がある場合、WebRequest または WebResponse オブジェクトをプロトコル固有のオブジェクトの種類にキャストする必要があります。If you need to set or read protocol-specific properties, you must cast your WebRequest or WebResponse object to a protocol-specific object type. 詳細については、「プラグ可能なプロトコルのプログラミング」を参照してください。For more information, see Programming pluggable protocols.

  2. WebRequest オブジェクトで必要なプロパティ値を設定します。Set any property values that you need in your WebRequest object. たとえば、認証を有効にするには、WebRequest.Credentials プロパティを NetworkCredential クラスのインスタンスに設定します。For example, to enable authentication, set the WebRequest.Credentials property to an instance of the NetworkCredential class:

    request.Credentials = CredentialCache.DefaultCredentials;
    
    request.Credentials = CredentialCache.DefaultCredentials
    
  3. WebRequest.GetResponse を呼び出してサーバーに要求を送信します。Send the request to the server by calling WebRequest.GetResponse. このメソッドは、サーバーの応答を格納するオブジェクトを返します。This method returns an object containing the server's response. 返された WebResponse オブジェクトの型は、要求の URI のスキームで決定されます。The returned WebResponse object's type is determined by the scheme of the request's URI. 次に例を示します。For example:

    WebResponse response = request.GetResponse();
    
    Dim response As WebResponse = request.GetResponse()
    
  4. WebResponse オブジェクトのプロパティにアクセスするか、またはそれをプロトコル固有インスタンスにキャストして、プロトコル固有のプロパティを読み取ることができます。You can access the properties of your WebResponse object or cast it to a protocol-specific instance to read protocol-specific properties.

    たとえば、HttpWebResponse の HTTP 固有のプロパティにアクセスするには、WebResponse オブジェクトを HttpWebResponse 参照にキャストします。For example, to access the HTTP-specific properties of HttpWebResponse, cast your WebResponse object to an HttpWebResponse reference. 次のコード例では、応答で送信される HTTP 固有の HttpWebResponse.StatusDescription プロパティを表示する方法を示します。The following code example shows how to display the HTTP-specific HttpWebResponse.StatusDescription property sent with a response:

    Console.WriteLine (((HttpWebResponse)response).StatusDescription);
    
    Console.WriteLine(CType(response,HttpWebResponse).StatusDescription)
    
  5. サーバーによって送信された応答データを格納しているストリームを取得するには、WebResponse.GetResponseStream メソッドを呼び出します。To get the stream containing response data sent by the server, call the WebResponse.GetResponseStream method. 次に例を示します。For example:

    Stream dataStream = response.GetResponseStream();
    
    Dim dataStream As Stream = response.GetResponseStream()
    
  6. 応答オブジェクトからデータを読み取った後に、WebResponse.Close メソッドを使用してそのオブジェクトを閉じるか、Stream.Close メソッドを使用して応答ストリームを閉じます。After you've read the data from the response object, either close it with the WebResponse.Close method or close the response stream with the Stream.Close method. 応答オブジェクトまたはストリームのいずれかを閉じないと、アプリケーションからサーバーへの接続が不足し、追加の要求を処理できなくなる可能性があります。If you don't close either the response object or the stream, your application can run out of server connections and become unable to process additional requests. WebResponse.Close メソッドは応答を閉じるときに Stream.Close を呼び出すため、応答とストリーム オブジェクトの両方で Close を呼び出す必要はありませんが、呼び出しても害はありません。Because the WebResponse.Close method calls Stream.Close when it closes the response, it's not necessary to call Close on both the response and stream objects, although doing so isn't harmful. 次に例を示します。For example:

    response.Close();
    
    response.Close()
    

Example

次のコード例は、Web サーバーへの要求を作成し、その応答内のデータを読み取る方法を示しています。The following code example shows how to create a request to a web server and read the data in its response:

using System;  
using System.IO;  
using System.Net;  
  
namespace Examples.System.Net
{
    public class WebRequestGetExample
    {
        public static void Main()
        {
            // Create a request for the URL.   
            WebRequest request = WebRequest.Create(
              "https://docs.microsoft.com");
            // 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. 
            // The using block ensures the stream is automatically closed. 
            using (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);
            }
            
            // Close the response.  
            response.Close();
        }
    }
}
Imports System.IO
Imports System.Net

Namespace Examples.System.Net
    Public Class WebRequestGetExample
        Public Shared Sub Main()
            ' Create a request for the URL.   
            Dim request As WebRequest =
              WebRequest.Create("https://docs.microsoft.com")
            ' 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. 
            ' The using block ensures the stream is automatically closed.
            Using 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)
            End Using

            ' Clean up the response.
            response.Close()
        End Sub
    End Class
End Namespace

関連項目See also