HttpWebRequest.GetResponse Méthode

Définition

Retourne une réponse d'une ressource Internet.

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

WebResponse contenant la réponse de la ressource Internet.

Exceptions

Le flux est déjà utilisé par un appel précédent à BeginGetResponse(AsyncCallback, Object).

Method a pour valeur GET ou HEAD, et soit ContentLength est supérieur ou égal à zéro, soit SendChunked a pour valeur true.

Le validateur du cache de demande a indiqué que la réponse à cette demande peut être fournie à partir du cache ; toutefois, cette demande comprend des données à envoyer au serveur. Les demandes qui envoient des données ne doivent pas utiliser le cache. Cette exception peut se produire si vous utilisez un validateur de cache personnalisé qui est implémenté de manière incorrecte.

Abort() a déjà été appelé.

  • ou - Le délai d’attente de la requête a expiré.

  • ou - Une erreur s’est produite lors du traitement de la demande.

Exemples

L’exemple de code suivant obtient la réponse d’une requête.

#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 GetResponse méthode retourne un WebResponse objet qui contient la réponse de la ressource Internet. L’instance réelle retournée est un HttpWebResponsetypecast dans cette classe pour accéder aux propriétés spécifiques à HTTP.

Un ProtocolViolationException est levée dans plusieurs cas lorsque les propriétés définies sur la HttpWebRequest classe sont en conflit. Cette exception se produit si une application définit la ContentLength propriété et la SendChunked propriété sur true, puis envoie une requête HTTP GET. Cette exception se produit si une application tente d’envoyer un bloc à un serveur qui prend uniquement en charge le protocole HTTP 1.0, où elle n’est pas prise en charge. Cette exception se produit si une application tente d’envoyer des données sans définir la ContentLength propriété ou si la SendChunked false mise en mémoire tampon est désactivée et sur une connexion keepalive (la KeepAlive propriété est true).

Attention

Vous devez appeler la Close méthode pour fermer le flux et libérer la connexion. L’échec de cette opération peut entraîner l’absence de connexions de votre application.

Lorsque vous utilisez la méthode POST, vous devez obtenir le flux de demandes, écrire les données à publier et fermer le flux. Cette méthode bloque l’attente du contenu à publier ; s’il n’y a pas de délai d’expiration et que vous ne fournissez pas de contenu, les threads appelants bloquent indéfiniment.

Notes

Plusieurs appels pour GetResponse renvoyer le même objet de réponse ; la requête n’est pas rééditée.

Notes

Votre application ne peut pas combiner des méthodes synchrones et asynchrones pour une requête particulière. Si vous appelez la GetRequestStream méthode, vous devez utiliser la GetResponse méthode pour récupérer la réponse.

Notes

Si un WebException est levée, utilisez les propriétés et Status les Response propriétés de l’exception pour déterminer la réponse du serveur.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Le suivi réseau dans .NET Framework.

Notes

Pour des raisons de sécurité, les cookies sont désactivés par défaut. Si vous souhaitez utiliser des cookies, utilisez la CookieContainer propriété pour activer les cookies.

S’applique à

Voir aussi