HttpWebRequest.GetResponse Methode

Definition

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 mit der Antwort von der Internetressource.

Ausnahmen

Der Stream wird bereits von einem vorherigen Aufruf von BeginGetResponse(AsyncCallback, Object) verwendet.

- oder -

TransferEncoding ist auf einen Wert festgelegt, und SendChunked ist false.

Method ist GET oder HEAD, und ContentLength ist entweder größer oder gleich 0 (null), oder SendChunked ist true.

- oder -

KeepAlive ist true, AllowWriteStreamBuffering ist false, ContentLength ist -1, SendChunked ist false und Method ist POST oder PUT.

- oder -

HttpWebRequest verfügt über einen Entitätskörper, die GetResponse()-Methode wird jedoch aufgerufen, ohne dass die GetRequestStream()-Methode aufgerufen wird.

- oder -

ContentLength ist größer als 0 (null), von der Anwendung werden jedoch nicht alle zugesagten Daten geschrieben.

Die Anforderungcacheprüfung hat ergeben, dass die Antwort auf diese Anforderung aus dem Cache bereitgestellt werden kann. Allerdings umfasst diese Anforderung Daten, die an den Server gesendet werden müssen. Anforderungen, durch die Daten gesendet werden, dürfen keinen Cache verwenden. Diese Ausnahme kann auftreten, wenn Sie eine benutzerdefinierte Cacheprüfung verwenden, die nicht ordnungsgemäß implementiert ist.

Abort() wurde bereits aufgerufen.

- oder -

Das Zeitlimit für die Anforderung ist abgelaufen.

- oder -

Bei der Verarbeitung der Anforderung ist ein Fehler aufgetreten.

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

Die GetResponse -Methode gibt ein WebResponse -Objekt zurück, das die Antwort der Internetressource enthält. Der tatsächliche instance zurückgegeben wird, ist ein HttpWebResponse- und kann für diese Klasse typecastet werden, um auf HTTP-spezifische Eigenschaften zuzugreifen.

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 truefestlegt und dann eine HTTP GET-Anforderung sendet. Diese Ausnahme tritt auf, wenn eine Anwendung versucht, Blöcke 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 ContentLength -Eigenschaft festzulegen, oder wenn das falseSendChunked Puffern deaktiviert ist und bei einer keepaliven Verbindung (die KeepAlive Eigenschaft ist true).

Achtung

Sie müssen die Close -Methode aufrufen, um den Stream zu schließen und die Verbindung zu lösen. Andernfalls kann dies dazu führen, dass ihre Anwendung keine Verbindungen mehr hat.

Wenn Sie die POST-Methode verwenden, müssen Sie den Anforderungsstream abrufen, die zu veröffentlichenden Daten schreiben und den Stream schließen. Diese Methode blockiert das Warten auf die Veröffentlichung von Inhalten. wenn kein Timeout festgelegt ist und Sie keinen Inhalt bereitstellen, blockiert der aufrufende Thread unbegrenzt.

Hinweis

Mehrere Aufrufe zum GetResponse Zurückgeben desselben Antwortobjekts; die Anforderung wird nicht erneut ausgegeben.

Hinweis

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.

Hinweis

Wenn ein WebException ausgelöst wird, verwenden Sie die Response Eigenschaften und Status der Ausnahme, um die Antwort vom Server zu bestimmen.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung im .NET Framework.

Hinweis

Aus Sicherheitsgründen sind Cookies standardmäßig deaktiviert. Wenn Sie Cookies verwenden möchten, verwenden Sie die CookieContainer -Eigenschaft, um Cookies zu aktivieren.

Gilt für:

Weitere Informationen