2011-11-28 10 views
13

Wiem, że istnieje wiele pytań dotyczących wysyłania żądań HTTP POST z C#, ale szukam metody, która używa WebClient zamiast HttpWebRequest. czy to możliwe? Byłoby miło, ponieważ klasa WebClient jest tak łatwa w użyciu.Wysyłanie POST z WebClient.DownloadString w C#

Wiem, że mogę ustawić właściwość Headers, aby ustawić określone nagłówki, ale nie wiem, czy rzeczywiście można wykonać test POST od WebClient.

Odpowiedz

13

Można użyć WebClient.UploadData() który używa protokołu HTTP POST, tj .:

using (WebClient wc = new WebClient()) 
{ 
    byte[] result = wc.UploadData("http://stackoverflow.com", new byte[] { }); 
} 

danych użytkowych, które podasz będą transmitowane jako organ POST żądania.

Alternatywnie istnieje WebClient.UploadValues(), aby przesłać kolekcję wartości nazw również za pośrednictwem HTTP POST.

7

Można użyć Upload metodę z HTTP 1.0 POST

string postData = Console.ReadLine(); 

using (System.Net.WebClient wc = new System.Net.WebClient()) 
{ 
    wc.Headers.Add("Content-Type","application/x-www-form-urlencoded"); 
    // Upload the input string using the HTTP 1.0 POST method. 
    byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postData); 
    byte[] byteResult= wc.UploadData("http://targetwebiste","POST",byteArray); 
    // Decode and display the result. 
    Console.WriteLine("\nResult received was {0}", 
         Encoding.ASCII.GetString(byteResult)); 
} 
Powiązane problemy