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 contenant 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 a pour valeur false.

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

- ou -

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

- ou -

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

- ou -

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

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 pour une demande.

#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. Le instance réel retourné est un HttpWebResponse, et peut être de typecast 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 propriété sur trueSendChunked , puis envoie une requête HTTP GET. Cette exception se produit si une application tente d’envoyer des blocs à 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 est false lorsque la SendChunked 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. Si vous ne le faites pas, votre application risque d’être à court 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 de publication de contenu ; s’il n’y a pas de délai d’attente défini et que vous ne fournissez pas de contenu, le thread appelant se bloque indéfiniment.

Notes

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

Notes

Votre application ne peut pas combiner des méthodes synchrones et asynchrones pour une demande 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 Response propriétés et Status 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 Suivi réseau dans le .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