181 votes

.NET : La plus simple pour envoyer le courrier avec les données et lire la réponse

À ma grande surprise, je ne peux pas faire quoi que ce soit presque aussi simple que cela, de ce que je peux dire, de la BCL .NET :

Cet hypothétique code ci-dessus fait un POST HTTP, avec les données et retourne la réponse d’une méthode sur une classe statique .

Puisque nous sommes laissés sans quelque chose d’aussi facile, quelle est la meilleure solution suivante ?

Comment puis-je envoyer un HTTP POST avec des données et obtenir le contenu de la réponse ?

290voto

Chris Hutchinson Points 3015
<pre><code></code><p>Vous aurez besoin de ces comprend :</p><pre><code></code></pre><p>Si vous êtes en insistant sur l’utilisation d’une méthode statique/classe :</p><pre><code></code></pre><p>Puis il suffit :</p><pre><code></code></pre></pre>

80voto

Ramesh Points 154

En utilisant HttpClient : autant que les préoccupations de développement app Windows 8, je suis tombé sur ceci.

47voto

jball Points 14152

Utilisez WebRequest. De Scott Hanselman:

32voto

BFree Points 46421
        private void PostForm()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://dork.com/service");
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            string postData ="home=Cosby&favorite+flavor=flies";
            byte[] bytes = Encoding.UTF8.GetBytes(postData);
            request.ContentLength = bytes.Length;

            Stream requestStream = request.GetRequestStream();
            requestStream.Write(bytes, 0, bytes.Length);

            WebResponse response = request.GetResponse();
            Stream stream = response.GetResponseStream();
            StreamReader reader = new StreamReader(stream);

            var result = reader.ReadToEnd();
            stream.Dispose();
            reader.Dispose();
        }

12voto

David Stratton Points 45298

Personnellement, je pense que l'approche la plus simple pour faire un http post et obtenir la réponse est d'utiliser la classe WebClient. Cette classe bien résumés les détails. Il y a même un exemple de code dans la documentation MSDN.

http://msdn.microsoft.com/en-us/library/system.net.webclient(SV.80).aspx

Dans votre cas, vous voulez que le UploadData() la méthode. (Encore une fois, un exemple de code est inclus dans la documentation)

http://msdn.microsoft.com/en-us/library/tdbbwh0a(SV.80).aspx

UploadString() va probablement travailler aussi bien, et il les résumés loin d'un niveau supplémentaire.

http://msdn.microsoft.com/en-us/library/system.net.webclient.uploadstring(SV.80).aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X