HttpWebRequest.GetResponse Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt eine Antwort von einer Internetressource zurück.
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
Gibt zurück
Eine WebResponse, die die Antwort der Internetressource enthält.
Ausnahmen
Der Datenstrom wird bereits von einem vorherigen Aufruf von BeginGetResponse(AsyncCallback, Object)verwendet.
-oder-
TransferEncoding wird auf einen Wert festgelegt, und SendChunked ist false
.
Method ist GET oder HEAD, und entweder ist ContentLength größer oder gleich Null oder SendChunked ist true
.
-oder-
KeepAlive ist true
, AllowWriteStreamBuffering ist false
, ContentLength -1, SendChunked ist false
und Method POST oder PUT.
-oder-
Die HttpWebRequest verfügt über einen Entitätstext, die GetResponse()-Methode wird jedoch aufgerufen, ohne die GetRequestStream()-Methode aufzurufen.
-oder-
Die ContentLength ist größer als Null, aber die Anwendung schreibt nicht alle versprochenen Daten.
Der Anforderungscache-Validator hat angegeben, dass die Antwort für diese Anforderung aus dem Cache bereitgestellt werden kann; Diese Anforderung enthält jedoch Daten, die an den Server gesendet werden sollen. Anforderungen, die Daten senden, dürfen den Cache nicht verwenden. Diese Ausnahme kann auftreten, wenn Sie einen benutzerdefinierten Cache validator verwenden, der falsch implementiert ist.
Abort() wurde zuvor aufgerufen.
-oder-
Der Timeoutzeitraum für die Anforderung ist abgelaufen.
-oder-
Fehler beim Verarbeiten der Anforderung.
Beispiele
Im folgenden Codebeispiel wird die Antwort für eine Anforderung abgerufen.
#using <System.dll>
using namespace System;
using namespace System::Net;
using namespace System::Text;
using namespace System::IO;
// Specify the URL to receive the request.
int main()
{
array<String^>^args = Environment::GetCommandLineArgs();
HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(WebRequest::Create(args[1]));
// 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 = dynamic_cast<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 = gcnew 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>
*/
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.
'...
'
'
Hinweise
Vorsicht
WebRequest
, HttpWebRequest
, ServicePoint
und WebClient
sind veraltet, und Sie sollten sie nicht für die neue Entwicklung verwenden. Verwenden Sie stattdessen HttpClient.
Die GetResponse-Methode gibt ein WebResponse Objekt zurück, das die Antwort der Internetressource enthält. Die tatsächliche zurückgegebene Instanz ist ein HttpWebResponseund kann typecast für diese Klasse für den Zugriff auf HTTP-spezifische Eigenschaften sein.
Ein ProtocolViolationException wird in mehreren Fällen ausgelöst, wenn die für die HttpWebRequest Klasse festgelegten Eigenschaften in Konflikt stehen. Diese Ausnahme tritt auf, wenn eine Anwendung die ContentLength-Eigenschaft und die SendChunked-Eigenschaft auf true
festlegt und dann eine HTTP GET-Anforderung sendet. Diese Ausnahme tritt auf, wenn eine Anwendung versucht, einen Block an einen Server zu senden, der nur das HTTP 1.0-Protokoll unterstützt, wobei dies nicht unterstützt wird. Diese Ausnahme tritt auf, wenn eine Anwendung versucht, Daten zu senden, ohne die eigenschaft ContentLength festzulegen, oder die SendChunked beim Deaktivieren der Pufferung false
und bei einer Keepalive-Verbindung (die eigenschaft KeepAlive ist true
).
Vorsicht
Sie müssen die Close-Methode aufrufen, um den Datenstrom zu schließen und die Verbindung freizugeben. Dies kann dazu führen, dass ihre Anwendung keine Verbindungen mehr aufweist.
Wenn Sie die POST-Methode verwenden, müssen Sie den Anforderungsdatenstrom abrufen, die zu veröffentlichenden Daten schreiben und den Datenstrom schließen. Diese Methode blockiert das Warten auf den Beitrag von Inhalten; Wenn kein Timeout festgelegt ist und Sie keinen Inhalt bereitstellen, wird der aufrufende Thread unbegrenzt blockiert.
Anmerkung
Mehrere Aufrufe an GetResponse dasselbe Antwortobjekt zurückgeben; die Anforderung nicht erneut ausgegeben wird.
Anmerkung
Ihre Anwendung kann keine synchronen und asynchronen Methoden für eine bestimmte Anforderung kombinieren. Wenn Sie die GetRequestStream-Methode aufrufen, müssen Sie die GetResponse-Methode verwenden, um die Antwort abzurufen.
Anmerkung
Wenn ein WebException ausgelöst wird, verwenden Sie die Response und Status Eigenschaften der Ausnahme, um die Antwort vom Server zu ermitteln.
Anmerkung
Dieses Mitglied gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.
Anmerkung
Aus Sicherheitsgründen werden Cookies standardmäßig deaktiviert. Wenn Sie Cookies verwenden möchten, verwenden Sie die CookieContainer Eigenschaft, um Cookies zu aktivieren.