HttpWebRequest.GetResponse Метод

Определение

Возвращает ответ от интернет-ресурса.Returns a response from an Internet resource.

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, содержащий ответ от интернет-ресурса.A WebResponse that contains the response from the Internet resource.

Исключения

Поток уже используется предыдущим вызовом BeginGetResponse(AsyncCallback, Object)The stream is already in use by a previous call to BeginGetResponse(AsyncCallback, Object).

-или--or- Для TransferEncoding устанавливается значение, а значение SendChunked равно false.TransferEncoding is set to a value and SendChunked is false.

Значение Method — GET или HEAD, и либо ContentLength больше или равно нулю, либо SendChunked равно true.Method is GET or HEAD, and either ContentLength is greater or equal to zero or SendChunked is true.

-или--or- KeepAlive равно true, AllowWriteStreamBuffering равно false, ContentLength равно –1, SendChunked равно false, а Method равно POST или PUT.KeepAlive is true, AllowWriteStreamBuffering is false, ContentLength is -1, SendChunked is false, and Method is POST or PUT.

-или--or- HttpWebRequest имеет тело сущности, но метод GetResponse() вызывается без вызова метода GetRequestStream().The HttpWebRequest has an entity body but the GetResponse() method is called without calling the GetRequestStream() method.

-или--or- ContentLength больше нуля, но приложение не записывает все обещанные данные.The ContentLength is greater than zero, but the application does not write all of the promised data.

Проверяющий элемент управления кэша запросов указывает, что ответ на этот запрос может быть предоставлен из кэша, однако этот запрос включает данные, которые должны быть отправлены на сервер.The request cache validator indicated that the response for this request can be served from the cache; however, this request includes data to be sent to the server. Запросы, отправляющие данные, не должны использовать кэш.Requests that send data must not use the cache. Это исключение может возникнуть при использовании пользовательского проверяющего элемента управления кэша, который неправильно реализован.This exception can occur if you are using a custom cache validator that is incorrectly implemented.

Метод Abort() был вызван ранее.Abort() was previously called.

-или--or- Период простоя для запроса с истекшим сроком действия.The time-out period for the request expired.

-или--or- При обработке этого запроса возникла ошибка.An error occurred while processing the request.

Примеры

В следующем примере кода возвращается ответ для запроса.The following code example gets the response for a request.

#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, содержащий ответ от Интернет-ресурса.The GetResponse method returns a WebResponse object that contains the response from the Internet resource. Фактически возвращаемый экземпляр является HttpWebResponseи может быть приведен к этому классу для доступа к свойствам, связанным с HTTP.The actual instance returned is an HttpWebResponse, and can be typecast to that class to access HTTP-specific properties.

В нескольких случаях возникает ProtocolViolationException, если свойства, заданные для класса HttpWebRequest, конфликтуют.A ProtocolViolationException is thrown in several cases when the properties set on the HttpWebRequest class are conflicting. Это исключение возникает, если приложение задает свойство ContentLength, а свойство SendChunkedtrue, а затем отправляет запрос HTTP GET.This exception occurs if an application sets the ContentLength property and the SendChunked property to true, and then sends an HTTP GET request. Это исключение возникает, если приложение пытается отправить фрагмент на сервер, который поддерживает только протокол HTTP 1,0, где это не поддерживается.This exception occurs if an application tries to send chunked to a server that only supports HTTP 1.0 protocol, where this is not supported. Это исключение возникает, если приложение пытается отправить данные, не устанавливая свойство ContentLength или SendChunked false при отключении буферизации и при подключении KeepAlive (свойство KeepAlive true).This exception occurs if an application tries to send data without setting the ContentLength property or the SendChunked is false when buffering is disabled and on a keepalive connection (the KeepAlive property is true).

Внимание!

Необходимо вызвать метод Close, чтобы закрыть поток и освободить соединение.You must call the Close method to close the stream and release the connection. Если этого не сделать, это может привести к нехватке подключений в приложении.Failure to do so may cause your application to run out of connections.

При использовании метода POST необходимо получить поток запроса, записать данные для отправки и закрыть поток.When using the POST method, you must get the request stream, write the data to be posted, and close the stream. Этот метод блокирует ожидание публикации содержимого; Если время ожидания не задано и вы не предоставляете содержимое, вызывающий поток блокируется в течение неограниченного времени.This method blocks waiting for content to post; if there is no time-out set and you do not provide content, the calling thread blocks indefinitely.

Примечание

Несколько вызовов GetResponse возвращают один и тот же объект ответа. запрос не выдается повторно.Multiple calls to GetResponse return the same response object; the request is not reissued.

Примечание

Приложение не может смешивать синхронные и асинхронные методы для конкретного запроса.Your application cannot mix synchronous and asynchronous methods for a particular request. При вызове метода GetRequestStream необходимо использовать метод GetResponse для получения ответа.If you call the GetRequestStream method, you must use the GetResponse method to retrieve the response.

Примечание

При появлении WebException используйте свойства Response и Status исключения, чтобы определить ответ от сервера.If a WebException is thrown, use the Response and Status properties of the exception to determine the response from the server.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети.This member outputs trace information when you enable network tracing in your application. Дополнительные сведения см. в разделе Сетевая трассировка в .NET Framework.For more information, see Network Tracing in the .NET Framework.

Примечание

По соображениям безопасности файлы cookie по умолчанию отключены.For security reasons, cookies are disabled by default. Если вы хотите использовать файлы cookie, используйте свойство CookieContainer, чтобы включить файлы cookie.If you wish to use cookies, use the CookieContainer property to enable cookies.

Применяется к

Дополнительно