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 is true, AllowWriteStreamBuffering is false, ContentLength is -1, SendChunked is false, is , and Method is POST или PUT.
-или-
Имеет HttpWebRequest тело сущности, но GetResponse() метод вызывается без вызова GetRequestStream() метода.
-или-
Значение ContentLength больше нуля, но приложение не записывает все обещанные данные.
Проверяющий элемент кэша запросов указывает, что ответ на этот запрос можно обслуживать из кэша; однако этот запрос включает данные, которые будут отправляться на сервер. Запросы, отправляющие данные, не должны использовать кэш. Это исключение может возникать, если вы используете настраиваемый проверяющий элемент кэша, который неправильно реализован.
Abort() ранее был вызван.
-или-
Срок ожидания запроса истек.
-или-
Произошла ошибка при обработке запроса.
Примеры
В следующем примере кода возвращается ответ на запрос.
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.
'...
'
'
Комментарии
Осторожность
WebRequest, HttpWebRequest, ServicePointи устарели, и WebClient вы не должны использовать их для новой разработки. Вместо этого используйте HttpClient.
Метод GetResponse возвращает WebResponse объект, содержащий ответ из ресурса Интернета. Фактический возвращаемый экземпляр — это объект HttpWebResponse, который можно вводить в этот класс, чтобы получить доступ к свойствам, зависящим от HTTP.
Исключение ProtocolViolationException возникает в нескольких случаях, когда свойства, заданные в HttpWebRequest классе, конфликтуют. Это исключение возникает, если приложение задает ContentLength свойство и SendChunked свойство true, а затем отправляет HTTP-запрос GET. Это исключение возникает, если приложение пытается отправить блоки на сервер, поддерживающий протокол HTTP 1.0, где это не поддерживается. Это исключение возникает, если приложение пытается отправить данные, не задав ContentLength свойство или SendChunkedfalse когда буферизация отключена, а также при сохранении подключения (KeepAliveсвойство )true.
Осторожность
Необходимо вызвать Close метод, чтобы закрыть поток и освободить подключение. Сбой в этом случае может привести к тому, что приложение не упустит подключения.
При использовании метода POST необходимо получить поток запроса, записать данные для публикации и закрыть поток. Этот метод блокирует ожидание публикации содержимого; Если не задано время ожидания, и вы не предоставляете содержимое, вызывающий поток блокируется на неопределенный срок.
Заметка
Несколько вызовов для GetResponse возврата одного объекта ответа; запрос не перезаписывается.
Заметка
Приложение не может смешивать синхронные и асинхронные методы для конкретного запроса. При вызове GetRequestStream метода необходимо использовать GetResponse метод для получения ответа.
Заметка
WebException Если создается исключение, используйте ResponseStatus свойства исключения, чтобы определить ответ с сервера.
Заметка
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
Заметка
По соображениям безопасности файлы cookie отключены по умолчанию. Если вы хотите использовать файлы cookie, используйте CookieContainer свойство для включения файлов cookie.