Comment publier des données sur une URL spécifique à l’aide de WebClient en C #

Je dois utiliser “HTTP Post” avec WebClient pour publier des données sur une URL spécifique que j’ai.

Maintenant, je sais que cela peut être accompli avec WebRequest mais pour certaines raisons, je préfère utiliser WebClient à la place. Est-ce possible? Si oui, quelqu’un peut-il me montrer un exemple ou me diriger vers la bonne direction?

Je viens de trouver la solution et oui, c’était plus facile que je pensais 🙂

alors voici la solution:

ssortingng URI = "http://www.myurl.com/post.php"; ssortingng myParameters = "param1=value1&param2=value2&param3=value3"; using (WebClient wc = new WebClient()) { wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; ssortingng HtmlResult = wc.UploadSsortingng(URI, myParameters); } 

ça marche comme du charme 🙂

Il y a une méthode intégrée appelée UploadValues qui peut envoyer HTTP POST (ou n’importe quel type de méthodes HTTP) ET gère la construction du corps de la requête (concaténer les parameters avec “&” et échapper des caractères par encodage URL) au format de données de formulaire approprié:

 using(WebClient client = new WebClient()) { var reqparm = new System.Collections.Specialized.NameValueCollection(); reqparm.Add("param1", " kinds & of = ? ssortingngs"); reqparm.Add("param2", "escaping is already handled"); byte[] responsebytes = client.UploadValues("http://localhost", "POST", reqparm); ssortingng responsebody = Encoding.UTF8.GetSsortingng(responsebytes); } 

WebClient.UploadSsortingng ou WebClient.UploadData vous permet de POST facilement les données sur le serveur. Je vais montrer un exemple en utilisant UploadData, puisque UploadSsortingng est utilisé de la même manière que DownloadSsortingng.

 byte[] bret = client.UploadData("http://www.website.com/post.php", "POST", System.Text.Encoding.ASCII.GetBytes("field1=value1&field2=value2") ); ssortingng sret = System.Text.Encoding.ASCII.GetSsortingng(bret); 

plus: http://www.daveamenta.com/2008-05/c-webclient-usage/

 //Making a POST request using WebClient. Function() { WebClient wc = new WebClient(); var URI = new Uri("http://your_uri_goes_here"); //If any encoding is needed. wc.Headers["Content-Type"] = "application/x-www-form-urlencoded"; //Or any other encoding type. //If any key needed wc.Headers["KEY"] = "Your_Key_Goes_Here"; wc.UploadSsortingngCompleted += new UploadSsortingngCompletedEventHandler(wc_UploadSsortingngCompleted); wc.UploadSsortingngAsync(URI,"POST","Data_To_Be_sent"); } void wc__UploadSsortingngCompleted(object sender, UploadSsortingngCompletedEventArgs e) { try { MessageBox.Show(e.Result); //e.result fetches you the response against your POST request. } catch(Exception exc) { MessageBox.Show(exc.ToSsortingng()); } } 
 ssortingng URI = "site.com/mail.php"; using (WebClient client = new WebClient()) { System.Collections.Specialized.NameValueCollection postData = new System.Collections.Specialized.NameValueCollection() { { "to", emailTo }, { "subject", currentSubject }, { "body", currentBody } }; ssortingng pagesource = Encoding.UTF8.GetSsortingng(client.UploadValues(URI, postData)); } 
 ssortingng URI = "http://www.myurl.com/post.php"; ssortingng myParameters = "param1=value1&param2=value2&param3=value3" 

peut être simplifié comme

http://www.myurl.com/post.php?param1=value1&param2=value2&param3=value3 .

Cela fonctionne toujours. J’ai trouvé l’original qui fonctionne encore et encore.