miércoles, 21 de febrero de 2007

Envio datos por HTTP utilizando método POST

Muchas veces necesitamos enviar algun mensaje via http. El problema surge si el mensaje contiene espacios. El método de envío recomendado es el método POST. A continuación os pongo el codigo:


//Crea el request con la url que le especifiquemos
HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(this.url);

//Importante poner los credenciales sino no podremos realizar bien el envio
//Si nuestro servidor tiene credenciales tendremos que añadirle password y
//contraseña. Para eelo utilizamos el siguiente codigo:
//
//NetworkCredential myCred=new NetworkCredential("usuario", "password");
//CredentialCache MyCrendentialCache = new CredentialCache();
//MyCrendentialCache.Add(URL, "Basic", myCred);
//HttpWRequest.Credentials = MyCrendentialCache;


HttpWRequest.Credentials = CredentialCache.DefaultCredentials;
HttpWRequest.UserAgent = "EJEMPLO";
HttpWRequest.KeepAlive = true;
HttpWRequest.Headers.Set("Pragma", "no-cache");
//Le hemos puesto un timeout de 5 min

HttpWRequest.Timeout = 300000;
// El metodo que usaremos es el POST
HttpWRequest.Method = "POST";
// add the content type so we can handle form data
HttpWRequest.ContentType = "application/x-www-form-urlencoded";
//Pasamos a bytes el mensaje.Recordar que tenemos que poner antes el nombre del id

//que apuntara al mensaje enviado. En este caso hemos escogido param1.
byte[] PostData = System.Text.Encoding.ASCII.GetBytes("param1="+m);
HttpWRequest.ContentLength = PostData.Length;
Stream tempStream = HttpWRequest.GetRequestStream();
//Escribimos los datos
tempStream.Write(PostData, 0, PostData.Length);
tempStream.Close();


Como veis el método es bastante sencillo.

3 comentarios:

AlekZero dijo...

hola javier tu articulo es muy util sin embar yo tengo una duda todas las conexiones ahi trabajan bajo el puerto 80 por default pero yo quiero hacer una peticion a el puero 1998 o cualquier otro como lo hago ? si mi direccion es

www.latinchat.com/JAVA pero la pericion va al puerto 1998 intente

www.latinchat.com:1998/JAVA

pero no es valido alguna sugerencia ?

Miguel Diaz dijo...

Muchas gracias por el articulo, tengo un pequeño problema en:

MyCrendentialCache.Add(URL, "Basic", myCred);

Me indica que la URL no existe en el contexto actual

Donde ubico la variable URL

Gracias por la ayuda

AJ dijo...

y Como se enviar archivos Zip o XML mediante POST??