2011-11-28 29 views
13

Sé que hay muchas preguntas sobre el envío de solicitudes HTTP POST con C#, pero estoy buscando un método que use WebClient en lugar de HttpWebRequest. es posible? Sería bueno porque la clase WebClient es muy fácil de usar.Enviar POST con WebClient.DownloadString en C#

Sé que puedo configurar la propiedad Headers para tener determinados encabezados, pero no sé si es posible realizar una POST desde WebClient.

Respuesta

13

Puede utilizar WebClient.UploadData() que utiliza HTTP POST, es decir .:

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

La carga útil de datos que especifique será transmitida como el cuerpo de correos de su petición.

Alternativamente hay WebClient.UploadValues() para cargar una colección de nombre-valor también a través de HTTP POST.

7

Se puede usar método de carga con HTTP 1.0 POSTAL

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)); 
} 
Cuestiones relacionadas