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

Объект 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 свойство и SendChunked свойство true, а затем отправляет HTTP-запрос GET. Это исключение возникает, если приложение пытается отправить фрагментированную на сервер, который поддерживает только протокол HTTP 1.0, где это не поддерживается. Это исключение возникает, если приложение пытается отправить данные без задания ContentLength свойства или SendChunked когда false буферизация отключена и в хранимом соединении ( KeepAlive свойство имеет значение true).

Внимание!

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

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

Примечание

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

Примечание

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

Примечание

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

Примечание

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

Примечание

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

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

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