Как разместить данные на определенный URL-адрес с помощью WebClient в C#
Мне нужно использовать "HTTP Post" с WebClient для публикации некоторых данных на определенный URL-адрес, который у меня есть.
теперь я знаю, что это можно сделать с помощью WebRequest, но по некоторым причинам я хочу использовать WebClient вместо этого. Это возможно? Если да, то может ли кто-нибудь показать мне пример или указать мне правильное направление?
6 ответов:
Я просто нашел решение и да это было проще, чем я думал:)
Итак, вот решение:
string URI = "http://www.myurl.com/post.php"; string myParameters = "param1=value1¶m2=value2¶m3=value3"; using (WebClient wc = new WebClient()) { wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; string HtmlResult = wc.UploadString(URI, myParameters); }он работает как шарм :)
есть встроенный метод под названием UploadValues который может отправлять HTTP POST (или любые методы HTTP) и обрабатывает построение тела запроса (объединение параметров с " & " и экранирование символов кодировкой url) в правильном формате данных формы:
using(WebClient client = new WebClient()) { var reqparm = new System.Collections.Specialized.NameValueCollection(); reqparm.Add("param1", "<any> kinds & of = ? strings"); reqparm.Add("param2", "escaping is already handled"); byte[] responsebytes = client.UploadValues("http://localhost", "POST", reqparm); string responsebody = Encoding.UTF8.GetString(responsebytes); }
используя
WebClient.UploadStringилиWebClient.UploadDataвы можете легко отправлять данные на сервер. Я покажу пример с помощью UploadData, так как UploadString используется таким же образом, как и DownloadString.byte[] bret = client.UploadData("http://www.website.com/post.php", "POST", System.Text.Encoding.ASCII.GetBytes("field1=value1&field2=value2") ); string sret = System.Text.Encoding.ASCII.GetString(bret);
//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.UploadStringCompleted += new UploadStringCompletedEventHandler(wc_UploadStringCompleted); wc.UploadStringAsync(URI,"POST","Data_To_Be_sent"); } void wc__UploadStringCompleted(object sender, UploadStringCompletedEventArgs e) { try { MessageBox.Show(e.Result); //e.result fetches you the response against your POST request. } catch(Exception exc) { MessageBox.Show(exc.ToString()); } }
string 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 } }; string pagesource = Encoding.UTF8.GetString(client.UploadValues(URI, postData)); }
string URI = "http://www.myurl.com/post.php"; string myParameters = "param1=value1¶m2=value2¶m3=value3"можно упростить как
http://www.myurl.com/post.php?param1=value1¶m2=value2¶m3=value3.
это всегда работает. Я нашел оригинал, который работает и выключается.
Comments