HttpWebRequest.GetResponse Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.