HttpWebRequest.GetResponse メソッド

定義

インターネット リソースからの応答を返します。

public:
 override System::Net::WebResponse ^ GetResponse();
public override System.Net.WebResponse GetResponse ();
override this.GetResponse : unit -> System.Net.WebResponse
Public Overrides Function GetResponse () As WebResponse

戻り値

インターネット リソースからの応答を含む WebResponse

例外

ストリームは、BeginGetResponse(AsyncCallback, Object)の以前の呼び出しによって既に使用されています。

-又は-

TransferEncoding は値に設定され、SendChunkedfalse

Method は GET または HEAD で、ContentLength が 0 以上であるか、SendChunkedtrue

-又は-

KeepAlivetrueAllowWriteStreamBufferingfalseContentLength が -1、SendChunkedfalseMethod が POST または PUT です。

-又は-

HttpWebRequest にはエンティティ本体がありますが、GetRequestStream() メソッドを呼び出さずに GetResponse() メソッドが呼び出されます。

-又は-

ContentLength は 0 より大きくなりますが、アプリケーションは約束されたすべてのデータを書き込むわけではありません。

要求キャッシュ検証コントロールは、この要求の応答をキャッシュから提供できることを示しました。ただし、この要求には、サーバーに送信されるデータが含まれます。 データを送信する要求では、キャッシュを使用しないでください。 この例外は、正しく実装されていないカスタム キャッシュ検証コントロールを使用している場合に発生する可能性があります。

Abort() は以前に呼び出されました。

-又は-

要求のタイムアウト期間が期限切れになりました。

-又は-

要求の処理中にエラーが発生しました。

次のコード例では、要求の応答を取得します。

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Text;
using namespace System::IO;

// Specify the URL to receive the request.
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(WebRequest::Create(args[1]));

   // Set some reasonable limits on resources used by this request
   request->MaximumAutomaticRedirections = 4;
   request->MaximumResponseHeadersLength = 4;

   // Set credentials to use for this request.
   request->Credentials = CredentialCache::DefaultCredentials;
   HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
   Console::WriteLine("Content length is {0}", response->ContentLength);
   Console::WriteLine("Content type is {0}", response->ContentType);

   // Get the stream associated with the response.
   Stream^ receiveStream = response->GetResponseStream();

   // Pipes the stream to a higher level stream reader with the required encoding format.
   StreamReader^ readStream = gcnew StreamReader(receiveStream, Encoding::UTF8);
   Console::WriteLine("Response stream received.");
   Console::WriteLine(readStream->ReadToEnd());
   response->Close();
   readStream->Close();
}

/*
The output from this example will vary depending on the value passed into Main
but will be similar to the following:

Content length is 1542
Content type is text/html; charset=utf-8
Response stream received.
<html>
...
</html>

*/
using System;
using System.Net;
using System.Text;
using System.IO;

    public class Test
    {
        // Specify the URL to receive the request.
        public static void Main (string[] args)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(args[0]);

            // Set some reasonable limits on resources used by this request
            request.MaximumAutomaticRedirections = 4;
            request.MaximumResponseHeadersLength = 4;
            // Set credentials to use for this request.
            request.Credentials = CredentialCache.DefaultCredentials;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Console.WriteLine("Content length is {0}", response.ContentLength);
            Console.WriteLine("Content type is {0}", response.ContentType);

            // Get the stream associated with the response.
            Stream receiveStream = response.GetResponseStream();

            // Pipes the stream to a higher level stream reader with the required encoding format.
            StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);

            Console.WriteLine("Response stream received.");
            Console.WriteLine(readStream.ReadToEnd());
            response.Close();
            readStream.Close();
        }
    }

/*
The output from this example will vary depending on the value passed into Main
but will be similar to the following:

Content length is 1542
Content type is text/html; charset=utf-8
Response stream received.
<html>
...
</html>

*/
Imports System.Net
Imports System.Text
Imports System.IO


    Public Class Test

        ' Specify the URL to receive the request.
        Public Shared Sub Main(ByVal args() As String)
        Dim request As HttpWebRequest = CType(WebRequest.Create(args(0)), HttpWebRequest)


        ' Set some reasonable limits on resources used by this request
        request.MaximumAutomaticRedirections = 4
        request.MaximumResponseHeadersLength = 4

        ' Set credentials to use for this request.
        request.Credentials = CredentialCache.DefaultCredentials

        Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)

        Console.WriteLine("Content length is {0}", response.ContentLength)
        Console.WriteLine("Content type is {0}", response.ContentType)

        ' Get the stream associated with the response.
        Dim receiveStream As Stream = response.GetResponseStream()

        ' Pipes the stream to a higher level stream reader with the required encoding format. 
        Dim readStream As New StreamReader(receiveStream, Encoding.UTF8)

        Console.WriteLine("Response stream received.")
        Console.WriteLine(readStream.ReadToEnd())
        response.Close()
        readStream.Close()
    End Sub
End Class
'
'The output from this example will vary depending on the value passed into Main 
'but will be similar to the following:
'
'Content length is 1542
'Content type is text/html; charset=utf-8
'Response stream received.
'...
'
'

注釈

注意

WebRequestHttpWebRequestServicePointWebClient は廃止されており、新しい開発には使用しないでください。 代わりに HttpClient を使用してください。

GetResponse メソッドは、インターネット リソースからの応答を含む WebResponse オブジェクトを返します。 返される実際のインスタンスは HttpWebResponseであり、そのクラスに型キャストして HTTP 固有のプロパティにアクセスできます。

ProtocolViolationException は、HttpWebRequest クラスに設定されたプロパティが競合している場合にスローされる場合があります。 この例外は、アプリケーションが ContentLength プロパティと SendChunked プロパティを trueに設定し、HTTP GET 要求を送信した場合に発生します。 この例外は、アプリケーションが HTTP 1.0 プロトコルのみをサポートするサーバーにチャンクを送信しようとした場合に発生します。このプロトコルはサポートされていません。 この例外は、アプリケーションが ContentLength プロパティを設定せずにデータを送信しようとした場合、またはバッファリングが無効でキープアライブ接続 (KeepAlive プロパティが true) に falseSendChunked.

注意

ストリームを閉じて接続を解放するには、Close メソッドを呼び出す必要があります。 これを行わないと、アプリケーションが接続を使い果たしてしまう可能性があります。

POST メソッドを使用する場合は、要求ストリームを取得し、投稿するデータを書き込み、ストリームを閉じる必要があります。 このメソッドは、コンテンツが投稿されるのを待つのをブロックします。タイムアウト セットがなく、コンテンツを指定しない場合、呼び出し元のスレッドは無期限にブロックされます。

手記

同じ応答オブジェクト GetResponse 返す複数の呼び出し。要求は再発行されません。

手記

アプリケーションは、特定の要求に対して同期メソッドと非同期メソッドを混在させることができません。 GetRequestStream メソッドを呼び出す場合は、GetResponse メソッドを使用して応答を取得する必要があります。

手記

WebException がスローされた場合は、例外の Response プロパティと Status プロパティを使用して、サーバーからの応答を確認します。

手記

このメンバーは、アプリケーションでネットワーク トレースを有効にすると、トレース情報を出力します。 詳細については、「.NET Frameworkでのネットワーク トレースの 」を参照してください。

手記

セキュリティ上の理由から、Cookie は既定で無効になっています。 Cookie を使用する場合は、CookieContainer プロパティを使用して Cookie を有効にします。

適用対象

こちらもご覧ください