HttpWebRequest.GetResponse Metoda

Definice

Vrátí odpověď z internetového prostředku.

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

Návraty

Odpověď WebResponse z internetového prostředku.

Výjimky

Stream se již používá předchozím voláním BeginGetResponse(AsyncCallback, Object).

nebo

TransferEncoding je nastavena na hodnotu a SendChunked je false.

Method je GET nebo HEAD a buď ContentLength je větší nebo rovno nule, nebo SendChunked je true.

nebo

KeepAliveis true, is , AllowWriteStreamBufferingfalse is ContentLength- 1, SendChunked is false, and Method is POST nebo PUT.

nebo

Obsahuje HttpWebRequest tělo entity, ale GetResponse() metoda je volána bez volání GetRequestStream() metody.

nebo

Je ContentLength větší než nula, ale aplikace nezapisuje všechna slíbená data.

Validátor mezipaměti požadavku uvedl, že odpověď pro tento požadavek může být obsluhována z mezipaměti; tento požadavek však zahrnuje data, která se mají odeslat na server. Požadavky, které odesílají data, nesmí mezipaměť používat. K této výjimce může dojít, pokud používáte vlastní validátor mezipaměti, který je nesprávně implementován.

Abort() byl dříve volána.

nebo

Vypršel časový limit požadavku.

nebo

Při zpracování požadavku došlo k chybě.

Příklady

Následující příklad kódu získá odpověď pro požadavek.

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

Poznámky

Caution

WebRequest, HttpWebRequest, ServicePointa WebClient jsou zastaralé a neměli byste je používat pro nový vývoj. Místo toho použijte HttpClient.

Metoda GetResponse vrátí WebResponse objekt, který obsahuje odpověď z internetového prostředku. Skutečná vrácená instance je a HttpWebResponsemůže být typecast této třídě pro přístup k vlastnostem specifické pro HTTP.

A ProtocolViolationException je vyvolán v několika případech, když jsou vlastnosti nastavené ve HttpWebRequest třídě konfliktní. K této výjimce dochází, pokud aplikace nastaví ContentLength vlastnost a SendChunked vlastnost na true, a pak odešle požadavek HTTP GET. K této výjimce dochází v případě, že se aplikace pokusí odeslat blok dat na server, který podporuje pouze protokol HTTP 1.0, kde to není podporováno. K této výjimce dochází v případě, že se aplikace pokusí odeslat data bez nastavení ContentLength vlastnosti nebo SendChunked je false při ukládání do vyrovnávací paměti zakázána a při zachování připojení ( KeepAlive vlastnost je true).

Caution

K zavření datového Close proudu a uvolnění připojení musíte volat metodu. Pokud to neuděláte, může dojít k tomu, že aplikace dojde k výpadku připojení.

Při použití metody POST musíte získat stream požadavku, zapisovat data, která se mají publikovat, a zavřít stream. Tato metoda blokuje čekání na publikování obsahu; Pokud není nastavený časový limit a nezadáte obsah, volající vlákno bude blokovat po neomezenou dobu.

Note

Více volání pro GetResponse vrácení stejného objektu odpovědi; požadavek se znovu nesudí.

Note

Vaše aplikace nemůže kombinovat synchronní a asynchronní metody pro konkrétní požadavek. Pokud voláte metodu GetRequestStream , musíte ji použít GetResponse k načtení odpovědi.

Note

WebException Pokud je vyvolán, použijte Response vlastnosti Status výjimky k určení odpovědi ze serveru.

Note

Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace najdete v tématu Network Tracing v .NET Framework.

Note

Z bezpečnostních důvodů jsou soubory cookie ve výchozím nastavení zakázané. Pokud chcete soubory cookie používat, použijte CookieContainer tuto vlastnost k povolení souborů cookie.

Platí pro

Viz také