HttpWebRequest.GetResponse Méthode

Définition

Retourne une réponse d'une ressource Internet.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

Retours

WebResponse contenant la réponse de la ressource Internet.A WebResponse that contains the response from the Internet resource.

Exceptions

Le flux est déjà utilisé par un appel précédent à BeginGetResponse(AsyncCallback, Object).The stream is already in use by a previous call to BeginGetResponse(AsyncCallback, Object).

- ou --or- TransferEncoding est défini sur une valeur, et SendChunked a pour valeur false.TransferEncoding is set to a value and SendChunked is false.

La propriété Method a la valeur GET ou HEAD et la propriété ContentLength est supérieure à zéro ou la propriété SendChunked a la valeur true.Method is GET or HEAD, and either ContentLength is greater or equal to zero or SendChunked is true.

- ou --or- KeepAlive est true, AllowWriteStreamBuffering est false, ContentLength a la valeur -1, SendChunked est false, et Method est POST ou PUT.KeepAlive is true, AllowWriteStreamBuffering is false, ContentLength is -1, SendChunked is false, and Method is POST or PUT.

- ou --or- Le HttpWebRequest a un corps d'entité, mais la méthode GetResponse() est appelée sans appeler la méthode GetRequestStream().The HttpWebRequest has an entity body but the GetResponse() method is called without calling the GetRequestStream() method.

- ou --or- Le ContentLength est supérieur à zéro, mais l’application n’écrit pas toutes les données promises.The ContentLength is greater than zero, but the application does not write all of the promised data.

Le validateur de cache de la requête a indiqué que la réponse à cette requête peut être fournie à partir du cache ; toutefois, cette requête comprend des données à envoyer au serveur.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. Les requêtes qui envoient des données ne doivent pas utiliser le cache.Requests that send data must not use the cache. Cette exception peut se produire si vous utilisez un validateur de cache personnalisé qui est implémenté de manière incorrecte.This exception can occur if you are using a custom cache validator that is incorrectly implemented.

Abort() a déjà été appelé.Abort() was previously called.

- ou --or- Le délai d'attente de la requête a expiré.The time-out period for the request expired.

- ou --or- Une erreur s’est produite pendant le traitement de la requête.An error occurred while processing the request.

Exemples

L’exemple de code suivant obtient la réponse pour une demande.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.
'...
'
'

Remarques

La méthode GetResponse retourne un objet WebResponse contenant la réponse de la ressource Internet.The GetResponse method returns a WebResponse object that contains the response from the Internet resource. L’instance réelle retournée est une HttpWebResponseet peut être convertie en cette classe pour accéder aux propriétés spécifiques à HTTP.The actual instance returned is an HttpWebResponse, and can be typecast to that class to access HTTP-specific properties.

Une ProtocolViolationException est levée dans plusieurs cas lorsque les propriétés définies sur la classe HttpWebRequest sont en conflit.A ProtocolViolationException is thrown in several cases when the properties set on the HttpWebRequest class are conflicting. Cette exception se produit si une application définit la propriété ContentLength et la propriété SendChunked sur true, puis envoie une requête HTTP.This exception occurs if an application sets the ContentLength property and the SendChunked property to true, and then sends an HTTP GET request. Cette exception se produit si une application tente d’envoyer un segment à un serveur qui ne prend en charge que le protocole HTTP 1,0, où cela n’est pas pris en charge.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. Cette exception se produit si une application tente d’envoyer des données sans définir la propriété ContentLength ou si la SendChunked est false lorsque la mise en mémoire tampon est désactivée et sur une connexion KeepAlive (la propriété KeepAlive est true).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).

Attention

Vous devez appeler la méthode Close pour fermer le flux et libérer la connexion.You must call the Close method to close the stream and release the connection. Dans le cas contraire, votre application risque de manquer de connexions.Failure to do so may cause your application to run out of connections.

Lorsque vous utilisez la méthode POST, vous devez obtenir le flux de requête, écrire les données à publier et fermer le flux.When using the POST method, you must get the request stream, write the data to be posted, and close the stream. Cette méthode bloque l’attente du contenu à poster ; Si aucun délai d’attente n’est défini et que vous ne fournissez pas de contenu, le thread appelant se bloque indéfiniment.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.

Notes

Plusieurs appels à GetResponse retourner le même objet de réponse ; la demande n’est pas réémise.Multiple calls to GetResponse return the same response object; the request is not reissued.

Notes

Votre application ne peut pas mélanger des méthodes synchrones et asynchrones pour une requête particulière.Your application cannot mix synchronous and asynchronous methods for a particular request. Si vous appelez la méthode GetRequestStream, vous devez utiliser la méthode GetResponse pour récupérer la réponse.If you call the GetRequestStream method, you must use the GetResponse method to retrieve the response.

Notes

Si une WebException est levée, utilisez les propriétés Response et Status de l’exception pour déterminer la réponse du serveur.If a WebException is thrown, use the Response and Status properties of the exception to determine the response from the server.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application.This member outputs trace information when you enable network tracing in your application. Pour plus d’informations, consultez la page traçage réseau dans le .NET Framework.For more information, see Network Tracing in the .NET Framework.

Notes

Pour des raisons de sécurité, les cookies sont désactivés par défaut.For security reasons, cookies are disabled by default. Si vous souhaitez utiliser des cookies, utilisez la propriété CookieContainer pour activer les cookies.If you wish to use cookies, use the CookieContainer property to enable cookies.

S’applique à

Voir aussi