HttpWebRequest.GetResponse Méthode

Définition

Retourne une réponse à partir 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

Un WebResponse qui contient la réponse de la ressource Internet.

Exceptions

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

-ou-

TransferEncoding est défini sur une valeur et SendChunked est false.

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

-ou-

KeepAlive est true, AllowWriteStreamBuffering est false, ContentLength est -1, SendChunked est falseet Method est POST ou PUT.

-ou-

Le HttpWebRequest a un corps d’entité, mais la méthode GetResponse() est appelée sans appeler la méthode GetRequestStream().

-ou-

La ContentLength est supérieure à zéro, mais l’application n’écrit pas toutes les données promises.

Le validateur du cache de requête a indiqué que la réponse de cette demande peut être traitée à partir du cache ; Toutefois, cette demande inclut les 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 n’est pas implémenté correctement.

Abort() a été appelée précédemment.

-ou-

Délai d’expiration de la demande.

-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

Prudence

WebRequest, HttpWebRequest, ServicePointet WebClient sont obsolètes et vous ne devez pas les utiliser pour le nouveau développement. Utilisez HttpClient à la place.

La méthode GetResponse retourne un objet WebResponse qui contient la réponse de la ressource Internet. L’instance réelle retournée est une HttpWebResponseet peut être de typecast à cette classe pour accéder aux propriétés propres à HTTP.

Une ProtocolViolationException est levée dans plusieurs cas lorsque les propriétés définies sur la classe HttpWebRequest sont en conflit. Cette exception se produit si une application définit la propriété ContentLength et la propriété SendChunked à 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ù cela n’est pas pris en charge. Cette exception se produit si une application tente d’envoyer des données sans définir la propriété ContentLength ou si l'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).

Prudence

Vous devez appeler la méthode Close pour fermer le flux et libérer la connexion. Si vous ne le faites pas, votre application risque de manquer de connexions.

Lorsque vous utilisez la méthode POST, vous devez obtenir le flux de requête, écrire les données à publier et fermer le flux. Cette méthode bloque l’attente du contenu à publier ; s’il n’existe aucun délai d’attente défini et que vous ne fournissez pas de contenu, les blocs de thread appelants sont indéfiniment définis.

Note

Plusieurs appels à GetResponse retournent le même objet de réponse ; la demande n’est pas rééditée.

Note

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

Note

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.

Note

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

Note

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

S’applique à

Voir aussi