create - Cómo publicar datos en una URL específica usando WebClient en C#
webrequest create (6)
Acabo de encontrar la solución y sí, fue más fácil de lo que pensaba :)
Así que aquí está la solución:
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);
}
funciona como encanto :)
Necesito usar "HTTP Post" con WebClient para publicar algunos datos en una URL específica que tengo.
Ahora, sé que esto se puede lograr con WebRequest, pero por alguna razón quiero usar WebClient. ¿Es eso posible? Si es así, ¿puede alguien mostrarme algún ejemplo o señalarme la dirección correcta?
Existe un método UploadValues llamado UploadValues que puede enviar HTTP POST (o cualquier tipo de método HTTP) Y maneja la construcción del cuerpo de la solicitud (concatenando parámetros con "&" y escapando los caracteres mediante la codificación url) en formato de datos de forma adecuada:
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);
}
Utilizando WebClient.UploadString
o WebClient.UploadData
, puede enviar datos de POST al servidor fácilmente. Mostraré un ejemplo usando UploadData, ya que UploadString se usa de la misma manera que 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 = "http://www.myurl.com/post.php";
string myParameters = "param1=value1¶m2=value2¶m3=value3"
se puede simplificar como
http://www.myurl.com/post.php?param1=value1¶m2=value2¶m3=value3 .
Esto siempre funciona. Encontré que el original funciona de forma intermitente.
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));
}