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인 경우

또는

KeepAlivetrue이고, AllowWriteStreamBufferingfalse이고, ContentLength가 -1이고, SendChunkedfalse이고, Method가 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.
'...
'
'

설명

메서드는 GetResponse 인터넷 리소스의 응답을 포함하는 개체를 반환 WebResponse 합니다. 반환된 실제 instance 이며 HttpWebResponseHTTP 관련 속성에 액세스하기 위해 해당 클래스에 형식 캐스팅될 수 있습니다.

ProtocolViolationException 클래스에 설정된 HttpWebRequest 속성이 충돌하는 경우 여러 경우에 가 throw됩니다. 애플리케이션을 설정 하는 경우이 예외가 발생 합니다 ContentLength 속성 및 SendChunked 속성을 true, HTTP GET 요청을 보냅니다. 애플리케이션이이 지원 되지 않습니다만 HTTP 1.0 프로토콜을 지 원하는 서버에 청크 분할 전송 하려고 하는 경우이 예외가 발생 합니다. 애플리케이션에서 설정 하지 않고 데이터를 전송 하려고 하는 경우이 예외가 발생 합니다 ContentLength 속성 또는 SendChunked 됩니다 false keepalive 연결에 버퍼링 사용 하지 않도록 설정 하는 경우 및 (합니다 KeepAlive 속성은 true).

주의

메서드를 Close 호출하여 스트림을 닫고 연결을 해제해야 합니다. 이렇게 하지 않으면 연결에서 실행 되도록 애플리케이션에 발생할 수 있습니다.

POST 메서드를 사용하는 경우 요청 스트림을 가져와 게시할 데이터를 작성하고 스트림을 닫아야 합니다. 이 메서드는 콘텐츠 게시 대기를 차단합니다. 시간 제한 집합이 없고 콘텐츠를 제공하지 않으면 호출 스레드가 무기한 차단됩니다.

참고

동일한 응답 개체를 반환하는 GetResponse 여러 호출입니다. 요청이 다시 실행되지 않습니다.

참고

애플리케이션 특정 요청에 대 한 동기 및 비동기 메서드를 혼합할 수 없습니다. 메서드를 호출하는 GetRequestStream 경우 메서드를 GetResponse 사용하여 응답을 검색해야 합니다.

참고

WebException throw되면 예외의 ResponseStatus 속성을 사용하여 서버의 응답을 확인합니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

참고

보안상의 이유로 쿠키는 기본적으로 사용하지 않도록 설정됩니다. 쿠키를 사용하려면 속성을 사용하여 CookieContainer 쿠키를 사용하도록 설정합니다.

적용 대상

추가 정보