HttpWebRequest.GetResponse Methode

Definition

Gibt eine Antwort von einer Internetressource zurück.Returns a response from an Internet resource.

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.A WebResponse that contains the response from the Internet resource.

Ausnahmen

Der Stream wird bereits von einem vorherigen Aufruf von BeginGetResponse(AsyncCallback, Object) verwendet.The stream is already in use by a previous call to BeginGetResponse(AsyncCallback, Object).

- oder --or- TransferEncoding ist auf einen Wert festgelegt, und SendChunked ist false.TransferEncoding is set to a value and SendChunked is false.

Method ist GET oder HEAD, und entweder ist ContentLength größer oder gleich 0 (null), oder SendChunked ist true.Method is GET or HEAD, and either ContentLength is greater or equal to zero or SendChunked is true.

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

- oder --or- HttpWebRequest verfügt über einen Entitätskörper, die GetResponse()-Methode wird jedoch aufgerufen, ohne dass die GetRequestStream()-Methode aufgerufen wird.The HttpWebRequest has an entity body but the GetResponse() method is called without calling the GetRequestStream() method.

- oder --or- ContentLength ist größer als 0 (null), von der Anwendung werden jedoch nicht alle zugesagten Daten geschrieben.The ContentLength is greater than zero, but the application does not write all of the promised data.

Die Cachebestätigung der Anforderung hat angegeben, dass die Antwort für diese Anforderung vom Cache bereitgestellt werden kann. Diese Anforderung enthält jedoch Daten, die an den Server gesendet werden sollen.The request cache validator indicated that the response for this request can be served from the cache; however, this request includes data to be sent to the server. Anforderungen, die Daten senden, dürfen den Cache nicht verwenden.Requests that send data must not use the cache. Diese Ausnahme kann auftreten, wenn Sie eine benutzerdefinierte Cachebestätigung verwenden, die nicht ordnungsgemäß implementiert wurde.This exception can occur if you are using a custom cache validator that is incorrectly implemented.

Abort() wurde bereits aufgerufen.Abort() was previously called.

- oder --or- Das Timeout für die Anforderung ist abgelaufen.The time-out period for the request expired.

- oder --or- Fehler beim Verarbeiten der Anforderung.An error occurred while processing the request.

Beispiele

Im folgenden Codebeispiel wird die Antwort für eine Anforderung abgerufen.The following code example gets the response for a request.

#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 von der Internet Ressource enthält.The GetResponse method returns a WebResponse object that contains the response from the Internet resource. Die tatsächliche Instanz, die zurückgegeben wird, ist eine HttpWebResponse, die für den Zugriff auf HTTP-spezifische Eigenschaften in diese Klasse umgewandelt werden kann.The actual instance returned is an HttpWebResponse, and can be typecast to that class to access HTTP-specific properties.

In einigen Fällen wird eine ProtocolViolationException ausgelöst, wenn die in der HttpWebRequest-Klasse festgelegten Eigenschaften in Konflikt stehen.A ProtocolViolationException is thrown in several cases when the properties set on the HttpWebRequest class are conflicting. Diese Ausnahme tritt auf, wenn eine Anwendung die ContentLength-Eigenschaft und die-Eigenschaft SendChunked auf truefestlegt und dann eine HTTP GET-Anforderung sendet.This exception occurs if an application sets the ContentLength property and the SendChunked property to true, and then sends an HTTP GET request. Diese Ausnahme tritt auf, wenn eine Anwendung versucht, Segmente an einen Server zu senden, der nur das HTTP 1,0-Protokoll unterstützt. Dies wird nicht unterstützt.This exception occurs if an application tries to send chunked to a server that only supports HTTP 1.0 protocol, where this is not supported. Diese Ausnahme tritt auf, wenn eine Anwendung versucht, Daten zu senden, ohne die ContentLength-Eigenschaft festzulegen, oder wenn die SendChunked false ist, wenn die Pufferung deaktiviert ist, und bei einer KeepAlive-Verbindung (die KeepAlive Eigenschaft trueist).This exception occurs if an application tries to send data without setting the ContentLength property or the SendChunked is false when buffering is disabled and on a keepalive connection (the KeepAlive property is true).

Achtung

Sie müssen die Close-Methode aufzurufen, um den Stream zu schließen und die Verbindung freizugeben.You must call the Close method to close the stream and release the connection. Wenn dies nicht der Fall ist, kann Ihre Anwendung nicht mehr über Verbindungen verfügen.Failure to do so may cause your application to run out of connections.

Wenn Sie die Post-Methode verwenden, müssen Sie den Anforderungs Datenstrom erhalten, die zu sendenden Daten schreiben und den Stream schließen.When using the POST method, you must get the request stream, write the data to be posted, and close the stream. Diese Methode blockiert das warten auf den Post-Inhalt. Wenn kein Timeout festgelegt ist und Sie keinen Inhalt bereitstellen, wird der Aufruf Thread unbegrenzt blockiert.This method blocks waiting for content to post; if there is no time-out set and you do not provide content, the calling thread blocks indefinitely.

Hinweis

Mehrere Aufrufe von GetResponse das gleiche Antwortobjekt zurückgeben. die Anforderung wird nicht neu ausgestellt.Multiple calls to GetResponse return the same response object; the request is not reissued.

Hinweis

In Ihrer Anwendung können keine synchronen und asynchronen Methoden für eine bestimmte Anforderung gemischt werden.Your application cannot mix synchronous and asynchronous methods for a particular request. Wenn Sie die GetRequestStream-Methode aufrufen, müssen Sie die GetResponse-Methode verwenden, um die Antwort abzurufen.If you call the GetRequestStream method, you must use the GetResponse method to retrieve the response.

Hinweis

Wenn eine WebException ausgelöst wird, verwenden Sie die Eigenschaften Response und Status der Ausnahme, um die Antwort vom Server zu ermitteln.If a WebException is thrown, use the Response and Status properties of the exception to determine the response from the server.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Hinweis

Aus Sicherheitsgründen sind Cookies standardmäßig deaktiviert.For security reasons, cookies are disabled by default. Wenn Sie Cookies verwenden möchten, verwenden Sie die CookieContainer-Eigenschaft, um Cookies zu aktivieren.If you wish to use cookies, use the CookieContainer property to enable cookies.

Gilt für:

Siehe auch