HttpWebRequest.GetResponse Metódus

Definíció

Egy internetes erőforrás válaszát adja vissza.

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

Válaszok

Az WebResponse internetes erőforrás válaszát tartalmazó válasz.

Kivételek

A streamet már használja egy korábbi hívás.BeginGetResponse(AsyncCallback, Object)

-vagy-

TransferEncoding értékre van állítva, és SendChunked az false.

Method a GET vagy a HEAD érték, és ContentLength vagy nagyobb vagy egyenlő nullával, vagy SendChunked az true.

-vagy-

KeepAlive is true, AllowWriteStreamBuffering is false, ContentLength is -1, SendChunked is false, and Method is POST or PUT.

-vagy-

A HttpWebRequest metódusnak van egy entitástörzse, de a GetResponse() metódus meghívása nélkül hívjuk meg a metódust GetRequestStream() .

-vagy-

Ez ContentLength nagyobb, mint nulla, de az alkalmazás nem írja meg az összes ígért adatot.

A kérésgyorsítótár-érvényesítő azt jelezte, hogy a kérésre adott válasz kézbesíthető a gyorsítótárból; ez a kérés azonban a kiszolgálónak küldendő adatokat is tartalmazza. Az adatokat küldő kérések nem használhatják a gyorsítótárat. Ez a kivétel akkor fordulhat elő, ha helytelenül implementált egyéni gyorsítótár-érvényesítőt használ.

Abort() korábban meghívták.

-vagy-

A kérelem időtúllépési időtartama lejárt.

-vagy-

Hiba történt a kérés feldolgozása során.

Példák

Az alábbi példakód lekéri egy kérés válaszát.

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

Megjegyzések

Figyelmeztetés

WebRequest, HttpWebRequest, ServicePointés WebClient elavultak, és nem szabad új fejlesztésre használni őket. A HttpClient használható helyette.

A GetResponse metódus egy WebResponse olyan objektumot ad vissza, amely az internetes erőforrás válaszát tartalmazza. A visszaadott tényleges példány egy HttpWebResponse, és a HTTP-specifikus tulajdonságok eléréséhez az adott osztályba is beírható.

Az A ProtocolViolationException több esetben is megjelenik, ha az osztályon HttpWebRequest beállított tulajdonságok ütköznek. Ez a kivétel akkor fordul elő, ha egy alkalmazás beállítja a ContentLength tulajdonságot és a SendChunked tulajdonságot true, majd HTTP GET kérést küld. Ez a kivétel akkor fordul elő, ha egy alkalmazás olyan kiszolgálóra próbál adattömböket küldeni, amely csak a HTTP 1.0 protokollt támogatja, ahol ez nem támogatott. Ez a kivétel akkor fordul elő, ha egy alkalmazás a tulajdonság beállítása ContentLength nélkül próbál adatokat küldeni, vagy ha SendChunked a false pufferelés le van tiltva, és egy megőrzési kapcsolaton (a KeepAlive tulajdonság true).

Figyelmeztetés

Meg kell hívnia a metódust a Close stream bezárásához és a kapcsolat feloldásához. Ennek elmulasztása azt okozhatja, hogy az alkalmazásnak elfogynak a kapcsolatai.

A POST metódus használatakor le kell kérnie a kérelemstreamet, meg kell írnia a közzéteendő adatokat, és be kell zárnia a streamet. Ez a módszer blokkolja a tartalom közzétételére váró várakozást; ha nincs időkorlát beállítva, és nem ad meg tartalmat, a hívószál határozatlan időre blokkolódik.

Note

Több hívás ugyanarra a válaszobjektumra GetResponse , a kérés nem lesz újra kiadva.

Note

Az alkalmazás nem tudja keverni egy adott kérés szinkron és aszinkron metódusait. Ha meghívja a metódust GetRequestStream , a válasz lekéréséhez a GetResponse metódust kell használnia.

Note

Ha egy WebException dobás történik, használja a Response kivétel tulajdonságait és Status tulajdonságait a kiszolgáló válaszának meghatározásához.

Note

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing a .NET-keretrendszerben.

Note

Biztonsági okokból a cookie-k alapértelmezés szerint le vannak tiltva. Ha cookie-kat szeretne használni, használja a tulajdonságot a CookieContainer cookie-k engedélyezéséhez.

A következőre érvényes:

Lásd még