HttpWebRequest.GetResponse Método

Definição

Retorna uma resposta de um recurso da Internet.

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

Devoluções

A WebResponse que contém a resposta do recurso da Internet.

Exceções

O fluxo já está em uso por uma chamada anterior para BeginGetResponse(AsyncCallback, Object).

-ou-

TransferEncoding é atribuído a um valor e SendChunked é false.

Method é GET ou HEAD, e ou ContentLength é maior ou igual a zero ou SendChunked é true.

-ou-

KeepAlive é true, AllowWriteStreamBuffering é false, ContentLength é -1, SendChunked é false, e Method é POST ou PUT.

-ou-

O HttpWebRequest tem um corpo de entidade, mas o GetResponse() método é chamado sem chamar o GetRequestStream() método.

-ou-

O ContentLength é maior que zero, mas a aplicação não escreve todos os dados prometidos.

O validador de cache de pedidos indicou que a resposta a este pedido pode ser servida a partir da cache; no entanto, este pedido inclui dados a serem enviados para o servidor. Pedidos que enviam dados não devem usar a cache. Esta exceção pode ocorrer se estiver a usar um validador de cache personalizado que está incorretamente implementado.

Abort() foi anteriormente chamado.

-ou-

O período de tempo para o pedido expirou.

-ou-

Ocorreu um erro durante o processamento do pedido.

Exemplos

O seguinte exemplo de código recebe a resposta para um pedido.

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.
'...
'
'

Observações

Atenção

WebRequest, HttpWebRequest, ServicePoint, e WebClient são obsoletos, e não deves usá-los para novos desenvolvimentos. Utilize HttpClient em substituição.

O GetResponse método devolve um WebResponse objeto que contém a resposta do recurso da Internet. A instância real devolvida é um HttpWebResponse, e pode ser tipcast para essa classe para aceder a propriedades específicas de HTTP.

A ProtocolViolationException é lançado em vários casos em que as propriedades definidas na HttpWebRequest classe são conflitantes. Esta exceção ocorre se uma aplicação definir a ContentLength propriedade e a SendChunked propriedade como true, e depois enviar um pedido HTTP GET. Esta exceção ocorre se uma aplicação tentar enviar chunked para um servidor que apenas suporta o protocolo HTTP 1.0, onde este não é suportado. Esta exceção ocorre se uma aplicação tentar enviar dados sem definir a ContentLength propriedade ou o SendChunked is false quando o buffering está desativado e numa ligação keepalive (a KeepAlive propriedade é true).

Atenção

Tens de chamar o Close método para fechar o stream e libertar a ligação. Não o fazer pode fazer com que a sua aplicação fique sem ligações.

Ao usar o método POST, deve obter o stream de pedidos, escrever os dados a publicar e fechar o fluxo. Este método bloqueia a espera que o conteúdo seja publicado; Se não houver um conjunto de time-out e não fornecer conteúdo, o fio que chama bloqueia-se indefinidamente.

Note

Múltiplas chamadas para GetResponse devolver o mesmo objeto de resposta; o pedido não é reemitido.

Note

A sua aplicação não pode misturar métodos síncronos e assíncronos para um pedido específico. Se chamar o GetRequestStream método, deve usá-lo GetResponse para recuperar a resposta.

Note

Se a WebException for lançado, use as Response propriedades e Status da exceção para determinar a resposta do servidor.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Rastreamento de Rede no .NET Framework.

Note

Por razões de segurança, os cookies estão desativados por defeito. Se desejar usar cookies, utilize a CookieContainer propriedade para ativar os cookies.

Aplica-se a

Ver também