Comenzamos creando un nuevo proyecto
Luego vamos a crear un Activity por cada metodo que vamos a utilizar en nuestro caso solo utilizaremos
los metodos de GET,POST,DELETE.
Ahora creamos un layout por cada metodo para asi mostrar cada metodo en Tabs.
Comenzamos añadiendo el componente de RestSharp, vamos a la carpeta de Components y descargamos el componente y lo agregamos a nuestro proyecto.
Ahora si vamos comenzar con el codigo y empezamamos con el codigo del MainActivity.cs donde solo vamos a crear las tabs para cada metodo que vamos a utilizar.
//LIBRERIAS using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using System.Net.Http; using System.Collections.Generic; using System.Threading.Tasks; using System.Net; using Newtonsoft.Json; using System.Json; using System.IO; //Hacemos referencia RestSharp using RestSharp; namespace Aplicacion1 { [Activity (Label = "Aplicacion1", MainLauncher = true)] //Cambiamos Activity por TabActivity para crear nuestras Tabs public class MainActivity : TabActivity { protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); //Mandamo llamar a nuestro metodo que crea las tabs y pasamos los parametros CreateTab(typeof(GET), "Metodo Get", "Metodo Get", Resource.Drawable.Icon); CreateTab(typeof(POST), "Metodo Post", "Metodo Post", Resource.Drawable.Icon); CreateTab(typeof(DELETE), "Metodo Delete", "Metodo Delete", Resource.Drawable.Icon); } //Este metodo es el que nos crea las tabs private void CreateTab(Type activityType, string tag, string label, int drawableId ) { var intent = new Intent(this, activityType); intent.AddFlags(ActivityFlags.NewTask); var spec = TabHost.NewTabSpec(tag); var drawableIcon = Resources.GetDrawable(drawableId); spec.SetIndicator(label, drawableIcon); spec.SetContent(intent); TabHost.AddTab(spec); } } //Entidad de los datos que vamos a usar. public class Datos_Usuarios { public int Id_Persona { get; set; } public string Nombre { get; set; } public string Paterno { get; set; } public string Materno { get; set; } public string Telefono { get; set; } public string Email { get; set; } public string Direccion { get; set; } public double Edad { get; set; } } }Ahora vamos al Metodo GET donde vamos a obtener todos los datos que nos va a regresar nuestro servicio desde una base de datos.
//Librerias using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; //Libreria Restsharp using RestSharp; namespace Aplicacion1 { [Activity (Label = "GET")] public class GET : Activity { //Declaroamos nuestras variables que utilizaremos public ArrayAdapter<Datos_Usuarios> adapter; //declaremos nuestro cliente public RestClient cliente; List<Datos_Usuarios> listausuarios = new List<Datos_Usuarios> (); Button BtnMostrarDatos ; ListView LvLIsta; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); //seleccionamos nuestro layout GET SetContentView (Resource.Layout.Get); BtnMostrarDatos = FindViewById<Button> (Resource.Id.button1); LvLIsta = FindViewById<ListView> (Resource.Id.listView1); //asignamos la direccion de nuestro servicio cliente = new RestClient ("http://192.168.1.73:83"); //declaramos nuestro adaptador para llenar nuestro listview adapter = new ArrayAdapter<Datos_Usuarios>(this, Android.Resource.Layout.SimpleListItem1); LvLIsta.Adapter = adapter; MetodoGet (); BtnMostrarDatos.Click += (object sender, EventArgs e) => { listausuarios = new List<Datos_Usuarios>(); MetodoGet(); }; //declaramos el evento de click en listview para mostrar informacion extra en un toast LvLIsta.ItemClick += lvlista_ItemClick; // Create your application here } void lvlista_ItemClick (object sender, AdapterView.ItemClickEventArgs e) { //toast para mostrar informacion extra de la mostrada Android.Widget.Toast.MakeText(this, listausuarios[e.Position].Email + " " + listausuarios[e.Position].Telefono, Android.Widget.ToastLength.Short).Show(); } public void MetodoGet() { //limpiamos nuestro adaptador adapter.Clear (); //hacemos nuestro request donde declaramos que metodo vamos a utilizar var request = new RestRequest ("api/Datos_Usuarios",Method.GET); //ejecutamos el metodo para que nos devuelva todo la informacion y la mostramos en nuestro listview var resultado = cliente.Execute<List<Datos_Usuarios>>(request).Data; foreach (Datos_Usuarios x in resultado) { Datos_Usuarios datos = new Datos_Usuarios (); datos.Id_Persona = x.Id_Persona; datos.Nombre = x.Nombre; datos.Paterno = x.Paterno; datos.Materno = x.Materno; datos.Telefono = x.Telefono; datos.Email = x.Email; datos.Direccion = x.Direccion; datos.Edad = x.Edad; adapter.Add (x.Nombre + " " + x.Paterno + " " + x.Materno) ; listausuarios.Add (datos); } } } }A continuación seguimos con nuestro método POST que es con el que insertaremos registros a nuestra base de datos a través del servicio.
//Librerias using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using RestSharp; namespace Aplicacion1 { [Activity (Label = "POST")] public class POST : Activity { //Variables public RestClient cliente; EditText txtnombre; EditText txtpaterno; EditText txtmaterno; EditText txttelefono; EditText txtemail; EditText txtdireccion; Button btnguardar; string nombre,paterno,materno,telefono,email,direccion; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); //Asignamos el layout Post SetContentView (Resource.Layout.Post); txtnombre = FindViewById<EditText> (Resource.Id.editText1); txtpaterno = FindViewById<EditText> (Resource.Id.editText2); txtmaterno = FindViewById<EditText> (Resource.Id.editText3); txttelefono = FindViewById<EditText> (Resource.Id.editText4); txtemail = FindViewById<EditText> (Resource.Id.editText5); txtdireccion = FindViewById<EditText> (Resource.Id.editText6); btnguardar = FindViewById<Button> (Resource.Id.button1); //asignamos la direccion de nuestro servicio cliente = new RestClient ("http://192.168.1.73:83"); //declaramos el evento a nuestro boton para guardar los datos btnguardar.Click += (object sender, EventArgs e) => { //Asignamos el valor de nuestras variables nombre = txtnombre.Text; paterno = txtpaterno.Text; materno = txtmaterno.Text; telefono = txttelefono.Text; email= txtemail.Text; direccion = txtdireccion.Text; //mandamos llamar el metodo post MetodoPost(nombre,paterno,materno,telefono,email,direccion); }; // Create your application here } public void MetodoPost(string nombre,string paterno, string materno,string telefono,string email,string direccion){ Datos_Usuarios usuarios = new Datos_Usuarios (); usuarios.Nombre = nombre; usuarios.Paterno = paterno; usuarios.Materno = materno; usuarios.Telefono = telefono; usuarios.Email = email; usuarios.Direccion = direccion; usuarios.Edad = 23; //hacemos el request del metodo que POST para guardar los datos var request = new RestRequest("api/Datos_Usuarios", Method.POST); //asignamos el valor de nuestros datos puede ser en XML O JSON en nuestro caso usaremos json request.RequestFormat = DataFormat.Json; //agregamos la entidad con los valores asignado anteriormente request.AddBody(usuarios); //ejecutamos el request cliente.Execute (request); //limpiamos los campos txtnombre.Text = ""; txtpaterno.Text = ""; txtmaterno.Text = ""; txttelefono.Text = ""; txtemail.Text = ""; txtdireccion.Text = ""; AlertDialog.Builder dialogo = new AlertDialog.Builder (this); AlertDialog men = dialogo.Create(); men.SetTitle ("Metodo Post"); men.SetMessage ("Guardado Correctamente"); men.Show (); } } }Y finalmente nuestro Metodo DELETE para eliminar registros de la base de datos.
//Librerias using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using RestSharp; namespace Aplicacion1 { [Activity (Label = "DELETE")] public class DELETE : Activity { //Variables public ArrayAdapter<Datos_Usuarios> adapter; public RestClient cliente; List<Datos_Usuarios> listausuarios = new List<Datos_Usuarios> (); ListView LvLIsta; Button btndatos; int id ; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); //seleccionamos layout DELETE SetContentView (Resource.Layout.Delete); LvLIsta = FindViewById<ListView> (Resource.Id.listView1); btndatos = FindViewById<Button> (Resource.Id.button1); //Declaramos nuestro cliente cliente = new RestClient ("http://192.168.1.73:83"); //inicializamos nuestro adaptador adapter = new ArrayAdapter<Datos_Usuarios>(this, Android.Resource.Layout.SimpleListItem1); LvLIsta.Adapter = adapter; MetodoGet (); LvLIsta.ItemClick += lvlista_ItemClick; btndatos.Click += btndatos_Click; // Create your application here } void btndatos_Click (object sender, EventArgs e) { MetodoGet (); } void lvlista_ItemClick (object sender, AdapterView.ItemClickEventArgs e) { //creamos un dialogo y agregamos 2 botones el de eliminar y el de aceptar AlertDialog.Builder dialogo = new AlertDialog.Builder (this); AlertDialog men = dialogo.Create(); men.SetTitle ("Metodo Delete"); men.SetMessage ("Seguro que desea eliminar el registro"); men.SetButton ("Aceptar",delegate(object send, DialogClickEventArgs er) { id= listausuarios[e.Position].Id_Persona; MetodoDelete(); listausuarios.RemoveAt(e.Position); }); men.SetButton2("Cancelar",delegate(object sende, DialogClickEventArgs em) { }); men.Show (); } public void MetodoDelete() { //creamos nuestro request con el metodo delete y pasamos el id del registro a eliminar var request = new RestRequest("api/Datos_Usuarios/{id}", Method.DELETE); //agregamos parametros request.AddParameter("id",id); //ejecutamos el request cliente.Execute (request); //llamamos el metodo get para actualizar el listview MetodoGet (); } public void MetodoGet() { //limpiamos nuestro adaptador adapter.Clear (); //hacemos nuestro request donde declaramos que metodo vamos a utilizar var request = new RestRequest ("api/Datos_Usuarios",Method.GET); //ejecutamos el metodo para que nos devuelva todo la informacion y la mostramos en nuestro listview var resultado = cliente.Execute<Listlt;Datos_Usuarios>>(request).Data; foreach (Datos_Usuarios x in resultado) { Datos_Usuarios datos = new Datos_Usuarios (); datos.Id_Persona = x.Id_Persona; datos.Nombre = x.Nombre; datos.Paterno = x.Paterno; datos.Materno = x.Materno; datos.Telefono = x.Telefono; datos.Email = x.Email; datos.Direccion = x.Direccion; datos.Edad = x.Edad; adapter.Add (x.Nombre + " " + x.Paterno + " " + x.Materno) ; listausuarios.Add (datos); } } } }Este fue todo y solo fue un pequeño ejemplo de como consumir servicios Rest utilizando el componente de xamarin RestSharp.
Acepto cualquier tipo de Comentario, Queja o Sugerencia.
referencias:
http://restsharp.org/
http://components.xamarin.com/view/restsharp
Buen dia Ricardo, tienes el ejemplo de los servicios.
ResponderEliminarSaludos.
hola amigo
ResponderEliminarno entiendo y no veo de donde sacas " =>" no veo en donde lo creas o que es gracias por tu aporte muy valioso
btnguardar.Click += (object sender, EventArgs e) => {
//Asignamos el valor de nuestras variables
nombre = txtnombre.Text;
paterno = txtpaterno.Text;
materno = txtmaterno.Text;
telefono = txttelefono.Text;
email= txtemail.Text;
direccion = txtdireccion.Text;
//mandamos llamar el metodo post
MetodoPost(nombre,paterno,materno,telefono,email,direccion);
};
esta en esta linea y me gustaria que me ayudaras gracias
hola amigo
ResponderEliminarno entiendo y no veo de donde sacas " =>" no veo en donde lo creas o que es gracias por tu aporte muy valioso
btnguardar.Click += (object sender, EventArgs e) => {
//Asignamos el valor de nuestras variables
nombre = txtnombre.Text;
paterno = txtpaterno.Text;
materno = txtmaterno.Text;
telefono = txttelefono.Text;
email= txtemail.Text;
direccion = txtdireccion.Text;
//mandamos llamar el metodo post
MetodoPost(nombre,paterno,materno,telefono,email,direccion);
};
esta en esta linea y me gustaria que me ayudaras gracias