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 задано значение, а SendChunked равно false.

Method равно GET или HEAD, и либо ContentLength больше или равно нулю, либо SendChunked равно true.

-или-

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

-или-

Запрос HttpWebRequest имеет тело сущности, но метод GetResponse() вызывается без вызова метода GetRequestStream().

-или-

ContentLength больше нуля, но приложение не записывает все обещанные данные.

Проверяющий элемент управления кэша запросов указывает, что ответ на этот запрос может быть предоставлен из кэша. Однако этот запрос содержит данные, которые будут отправлены на сервер. Запросы, отправляющие данные, не должны использовать кэш. Это исключение может возникнуть при использовании настраиваемого проверяющего элемента управления кэша, который неправильно реализован.

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 объект , содержащий ответ от интернет-ресурса. Фактическим возвращаемым экземпляром HttpWebResponseявляется , и его можно включить в этот класс для доступа к свойствам, зависящим от HTTP.

Исключение ProtocolViolationException возникает в нескольких случаях, когда свойства, заданные в HttpWebRequest классе, конфликтуют. Это исключение возникает, если приложение присваивает свойству ContentLength и свойству SendChunkedtrueзначение , а затем отправляет HTTP-запрос GET. Это исключение возникает, если приложение пытается отправить фрагменты на сервер, который поддерживает только протокол HTTP 1.0, где это не поддерживается. Это исключение возникает, если приложение пытается отправить данные без задания ContentLength свойства , или SendChunked если false буферизация отключена, и при сохранении соединения ( KeepAlive свойство имеет значение true)..

Внимание!

Необходимо вызвать метод , Close чтобы закрыть поток и освободить подключение. В этом случае в приложении могут быть неисполнение подключений.

При использовании метода POST необходимо получить поток запроса, записать данные для публикации и закрыть поток. Этот метод блокирует ожидание публикации содержимого; Если время ожидания не задано и вы не предоставляете содержимое, вызывающий поток блокируется на неопределенный срок.

Примечание

Несколько вызовов для GetResponse возврата одного и того же объекта ответа; запрос не выполняется повторно.

Примечание

Приложение не может смешивать синхронные и асинхронные методы для определенного запроса. При вызове GetRequestStream метода необходимо использовать GetResponse метод для получения ответа.

Примечание

Если возникает WebException исключение , используйте Response свойства и Status исключения, чтобы определить ответ от сервера.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе Трассировка сети в платформа .NET Framework.

Примечание

По соображениям безопасности файлы cookie отключены по умолчанию. Если вы хотите использовать файлы cookie, используйте CookieContainer свойство , чтобы включить файлы cookie.

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

См. также раздел