miércoles, 16 de marzo de 2011

Consumir Servicio Web detras de un proxy

Dim svc As New Servicio
Dim nc As NetworkCredential = New NetworkCredential("usuario", "clave", "dominio")
Dim pr As New WebProxy("ip del proxy", puerto) 'puerto es un entero
pr.Credentials = nc
svc.Proxy = pr
Dim dtv As New DataView
Dim ds As New DataSet
ds = svc.getData
dtv = ds.Tables(0).DefaultView
Me.DataGridView1.DataSource = dtv

Al correrlo, ya podemos cargar el dataset devuelto en el datagrid.

sábado, 12 de marzo de 2011

Consumir Servicio Web desde Silverlight

Debido a que he buscado y buscado por mucho tiempo en Google un método para guardar datos en Silverlight, me he dado la tarea de crear un servicio web para enviar los datos a una base de datos para poder hacer una inserción de registros.
Creacion del Servicio Web.

En el servicio web agregamos una referencia a MySql.Data.MySqlClient
Creamos el siguiente método web

[WebMethod]
public void insDocuments(int doc_type, string refr, byte[] imagen, int usr, DateTime dt, int st)
{


//System.Windows.Media.Imaging.BitmapImage bImg = new System.Windows.Media.Imaging.BitmapImage();

MySqlConnection cnn = new MySqlConnection("server=localhost;User Id=root;database=db_scanning");
MySqlCommand cmd = new MySqlCommand();
cnn.Open();
string sql = "insert into documents(id_document,doc_type,doc_reference,doc_scanned,user_id,mod_date,state)" +
" VALUES(@id_document,@doc_type,@doc_reference,@doc_scanned,@user_id,@mod_date,@state)";
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
cmd.Connection = cnn;
cmd.Parameters.Add("@id_document",MySqlDbType.VarChar).Value=getCode(doc_type);
cmd.Parameters.Add("@doc_type", MySqlDbType.Int32).Value = doc_type;
cmd.Parameters.Add("@doc_reference", MySqlDbType.VarChar).Value = refr;
cmd.Parameters.Add("@doc_scanned", MySqlDbType.LongBlob).Value = imagen;
cmd.Parameters.Add("@user_id", MySqlDbType.Int32).Value = usr;
cmd.Parameters.Add("@mod_date", MySqlDbType.Datetime).Value = dt;
cmd.Parameters.Add("@state", MySqlDbType.Int32).Value = st;
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cnn.Close();
}

Despues lo invocamos desde la aplicacion Silverlight agregando la respectiva referencia a servicio.

OpenFileDialog op = new OpenFileDialog();
op.ShowDialog();
BitmapImage imageSource = new BitmapImage();
imageSource.SetSource(op.File.OpenRead());
FileStream fst = op.File.OpenRead();
byte[] bytes = new byte[fst.Length];
fst.Read(bytes, 0, bytes.Length);

svc.insDocumentsAsync(2, "REF", bytes, 1, DateTime.Today, 1);
Con esto ya podemos trabajar insertando registros a una base de datos utilizando Silverlight.