martes, 27 de febrero de 2007

Recibir datos via http

Bueno continuado con la entrada que puse hace unos días os paso el código para recuperar datos de un envío mediante el protocolo http.


HttpWebResponse HttpWResponse;
//Comprobamos que no haya una conexion previa
if(null != HttpWResponse)
{
HttpWResponse.Close();
HttpWResponse = null;
}

//Recordar que la respuesta la tnemos que hacer sobre una conexion ya creada
//En la anterior entrada pudimos ver como se creaba
HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();


//Ahora leemos el envio.
StreamReader sr = new StreamReader(HttpWResponse.GetResponseStream(), Encoding.ASCII);
//Convertimos lo que obtenemos en String
string s = sr.ReadToEnd();
sr.Close();


Esto es basicamente lo necesario para obtener datos. Ya cuando me meta más en el tema pondré alguna que otra cosa más. Un saludo.

viernes, 23 de febrero de 2007

Conexion y consulta a base de datos en ACCESS

Hola a todos. Hoy en el trabajo estuve liado con las bases de datos. He hecho un método que accede a una base de datos en access y hacemos una simple consulta.

try
{

//Realizamos una conexion odbc (base de datos access)
OdbcConnection MyConnection = new OdbcConnection();

//Cadena de conexion. Esto es lo que hay que poner para acceder
//a una base de datos en access. Si teneis una base de datos en
//oracle o alguna otra plataforma solo tendreis que cambiar esto.
String cadenaConexion = "Driver={Microsoft Access Driver (*.mdb)};Dbq="+this.path+"NombreBaseDatos.mdb;Uid=;Pwd=;";
MyConnection.ConnectionString = cadenaConexion;
String consulta = "SELECT * FROM TABLA";

//Creamos un dataadapter donde depositaremos los resultados.
OdbcDataAdapter adaptador = new OdbcDataAdapter(consulta,MyConnection);

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataTable.Locale = System.Globalization.CultureInfo.InvariantCulture;

//Incluimos en el datatable lo que hemos obtenido de la consulta
adaptador.Fill(dataTable);
//El bindingSource es el que tenemos relacionado con la base de datos

bindingSource1.DataSource = dataTable;
//Por ultimo actulizamos el datagridview para ver los datos.
dataGridView1.DataSource = bindingSource1;
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace);
}


Bueno este método es muy sencillo y da muy buen resultado. Si teneis alguna duda comentadla. Un saludo.

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.

lunes, 19 de febrero de 2007

CAIQ V


Bueno como veís aqui en unos pocos meses se celebrará el congreso andaluz de ingeniros químicos. Este congreso esta siendo organizado por uns buenas amigas nuestras a las que se les desea mucha suerte.

En cuanto a la relación que tengo con el congreso; Hector (teneis su blog en blogs amigos) y yo estamos realizandole la página WEB en aspx con Visual Studio. Cuando este colgada pondremos por aqui la dirección para que le echeis un vistazo.

No es que se de nuestra cosecha; pero nos esta quedando bastante profesional. Este cartel no es la versión definitiva pero bueno, es un primer prototipo que tuvimos la oportunidad de diseñar y parece que ha gustado para que sea finalmente el cartel del congreso.

Calculo de área mediante productos cruzados

En algunas ocasiones es necesario calcular el área de un poligono. Esto resulta bastante sencillo si sabemos de que polígono se trata. En cambio si no se tiene el poligono predefinido, es decir, puede ser un triangulo, pentagono, etc; entonces utilizamo el metodo de productos cruzados. A continuación os expongo el código de dicho método:
p --> Es una lista de puntos que defnen el poligono


public float calculoAreaProductosCruzados(List p)
{
float area = 0;
Point p1, p2;
for (int i = 0; i < p.Count; i++)
{
if ((i + 1) == p.Count)
{
p1 = p[i];
p2 = p[0];
}
else
{
p1 = p[i];
p2 = p[i + 1];
}
area = area + ((p2.X * p1.Y) - (p1.X * p2.Y));
}
return Math.Abs(area / 2);
}

El metodo es bastante sencillo y da muy buen resultado.

Bienvenida

Hola a todos. Espero que las cosas que veaís en este blog os puedan servir de ayuda. Además podeis realizar cualquier pregunta en los comentarios e intentare contestarla lo mejor posible.