Partager via


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

Qui WebResponse 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 false, et Method est POST ou PUT.

-ou-

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

-ou-

La ContentLength valeur 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é 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;
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, , HttpWebRequestServicePointet sont obsolètes, et WebClient vous ne devez pas les utiliser pour le nouveau développement. Utilisez HttpClient à la place.

La GetResponse méthode retourne un WebResponse objet qui contient la réponse de la ressource Internet. L’instance réelle retournée est une HttpWebResponse, et peut être de typecast vers cette classe pour accéder aux propriétés propres à 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é truesur , 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 ContentLength propriété ou si la SendChunkedfalse mise en mémoire tampon est désactivée et sur une connexion keepalive (la KeepAlive propriété est true).

Prudence

Vous devez appeler la Close méthode 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 pour GetResponse retourner le même objet de réponse ; la requête 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 GetRequestStream méthode, vous devez utiliser la GetResponse méthode pour récupérer la réponse.

Note

Si une WebException exception 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.

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 .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 CookieContainer propriété pour activer les cookies.

S’applique à

Voir aussi