Advertisement
onzulin

Consumir REST API en Windows Phone

Oct 7th, 2014
433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.46 KB | None | 0 0
  1. #este es el metodo para el registro del usuario utilizando el boton de registro en mi aplicación con un formulario de registro
  2. private void ButtonRegister_Click(object sender, RoutedEventArgs e)
  3.         {
  4.             bool isValid = false;
  5.            
  6.             //comprobacion de si la clave tiene un minimo de 3 caracteres comn un if
  7.             if (PasswordBoxPass.Password.Length >= 3)
  8.             {
  9.                 //aqui se hace otra comprobacion con otro if para ver si los password coinciden
  10.                 if (PasswordBoxPass.Password == PasswordBoxConfirmation.Password)
  11.                 {
  12.                
  13.                     //comprobnar que el texto puesto en la textbox es un correo electronico y si no lo es no dejar seguir el proceso de registro y dar un error con un mensaje
  14.  
  15.                     //aqui lo que hago una vez ya conectado con Windowsazure es introducir datos una vez que el usuario le al boton register
  16.                     string password = PasswordBoxPass.Password;
  17.  
  18.                     RegexUtil RegexUtil = new RegexUtil();
  19.                     //el metodo isValidEmail me devolvera false o true dependiendo de si la cadena la toma como buena o mala si tiene o no formato de email
  20.                     isValid = RegexUtil.IsValidEmail(TextBoxEmail.Text);
  21.                     if (isValid == true)
  22.                     {
  23.                         //para introducir el dato del usuario en el servicio movil
  24.                         try
  25.                         {
  26.                             //aqui probaremos tambien a cifrar la clave
  27.                             //lo que haremos sera el metodo parse para transformar la string en Byte
  28.                             //byte password = byte.Parse(PasswordBoxPass.Password);ç
  29.                             /* este codigo no me sirve para generar el hash de la clave que es lo que vamos a almacenar junto con el codigo salt
  30.                             byte[] password = new byte[PasswordBoxPass.Password.Length];
  31.                             for (int i = 0; i < PasswordBoxPass.Password.Length; i++)//haz un ciclo para llenar el arreglo
  32.                             {
  33.                                 password[i] = byte.Parse(PasswordBoxPass.Password[i].ToString());//conversion!!! la variable i representa la posicion en k se encuentra
  34.                             }
  35.                             */
  36.                             byte[] salt = CryptoPassHttp.GetSalt();
  37.                             byte[] hash = CryptoPassHttp.GenerateHash(PasswordBoxPass.Password, salt);
  38.                             //en este metodo lo que estoy obteniendo es el usuario para insertarlo en la base de datos
  39.  
  40.                             usuarios user = CryptoPassHttp.GetSecureUserModel(TextBoxName.Text, password, TextBoxEmail.Text, salt);
  41.                             //realizar el salvado de datos del usuario a registrar con los datos que tenemos
  42.  
  43.  
  44.                             //await userTable.InsertAsync(user);
  45.                             //sincronizar los elementos de la tabla
  46.                             //este elemento es el que falla
  47.                             //items = await userTable.ToCollectionAsync();
  48.                             //user.Id = items.Count + 1;
  49.                             //para actualizar la tabla
  50.                             //await userTable.UpdateAsync(user);
  51.                             JsonObject jsonObject = new JsonObject();
  52.                             //vamos a ver la forma de trabajar con texto con json segun el ejemplo de Microsoft y adaprlo a mi codigo segun lo que tenga que enviar
  53.                             jsonObject["nombre"] = JsonValue.CreateStringValue(TextBoxName.Text);
  54.                             jsonObject["email"] = JsonValue.CreateStringValue(TextBoxEmail.Text);
  55.                             jsonObject["hash"] = JsonValue.CreateStringValue(user.hash);
  56.                             jsonObject["salt"] = JsonValue.CreateStringValue(user.salt);
  57.                             string jsonString = jsonObject.Stringify();
  58.                            
  59.                            
  60.                            
  61.                             /*
  62.                             Task<bool> Resultado = CryptoPassHttp.GetUserFromDatabase(TextBoxEmail.Text, jsonObject);
  63.                             if (Resultado.Result)
  64.                             {
  65.                                
  66.                             }
  67.                             else
  68.                             {
  69.  
  70.                             }
  71.                             */
  72.                             Task<bool> users = CryptoPassHttp.RegisterUser(user, jsonString);
  73.                              //aqui ya se va al otro XAML en la finalizacion del programa se ira al de aceptarlos terminos y condiciones del programa
  74.                             /*
  75.                             Task<usuarios> userpass = CryptoPassHttp.VerifyLogin(user.email, password);
  76.                             //
  77.                             if (users.Result == false)
  78.                             {
  79.                                 MessageBox.Show("user exist in the database, choose other user", "Information", MessageBoxButton.OK);
  80.                             }
  81.                             else if (userpass == null)
  82.                             {
  83.                                 MessageBox.Show("Password incorrect", "Information", MessageBoxButton.OK);
  84.                             }
  85.                             */
  86.                             //aqui ya te lleva a la ventana para trabajar con el programa
  87.                             NavigationService.Navigate(new Uri("/PivotProgram.xaml" + TextBoxEmail.Text, UriKind.Relative));
  88.  
  89.                            
  90.                            
  91.                            
  92.  
  93.                             //usuarios usuario = new usuarios { usuario = TextBoxUser.Text, hash = PasswordBoxPass.Password, email = TextBoxEmail.Text };
  94.                             //App.MobileService.GetTable<usuarios>().InsertAsync(usuario);
  95.  
  96.                         }
  97.                         catch (Exception ex)
  98.                         {
  99.                             MessageBox.Show(ex.Message);
  100.                         }
  101.  
  102.                     }
  103.                     else
  104.                     {
  105.                         MessageBox.Show("the format e-mail is not correct", "Information", MessageBoxButton.OK);
  106.                     }
  107.                 }
  108.                 else
  109.                 {
  110.                     MessageBox.Show("password fail must be equal", "Information", MessageBoxButton.OK);
  111.                     PasswordBoxPass.SelectAll();
  112.                     PasswordBoxConfirmation.Password = "";
  113.                     PasswordBoxPass.Focus();
  114.                    
  115.                 }
  116.             }
  117.             //comprobar primero que sean la misma clave en las 2 passwordbox
  118.            
  119.         }
  120. #este es el metodo dentro del objeto que realiza el registro de usuario llamado CryptoPassHttp
  121. public async static Task<bool> RegisterUser(usuarios user, string jsonString)
  122.         {
  123.             /*
  124.             aqui tendremos que crear el objeto httpclient y mandarle por post el objeto json
  125.             */
  126.              // Add a user-agent header
  127.             //encapsular en un formato de texto valido el jsonObject
  128.             HttpResponseMessage httpResponseMessage;
  129.             HttpClient httpClient = new HttpClient();
  130.             //HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
  131.             Uri uri = new Uri("http://192.168.1.2/laravelplan/public/api/rest/users");
  132.             //var headers = httpClient.DefaultRequestHeaders;
  133.             //headers.UserAgent.ParseAdd("ie");
  134.             //headers.UserAgent.ParseAdd("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
  135.             //comprobaamos que la conexion existe y que el servidor funciona basicamente usamos esa direccion para ver si nos responde algo
  136.             try
  137.             {
  138.         #aqui tengo el problema despues de este codigo GetAsync(uri) me salta al codigo de abajo no lo se porque, gracias.
  139.                 httpResponseMessage = await httpClient.GetAsync(uri);
  140.                 if (httpResponseMessage.IsSuccessStatusCode)
  141.                 {
  142.                     //aqui ya mando el jsonString al servicio REST
  143.                     Uri uristore = new Uri("http://192.168.1.2/laravelplan/public/api/rest/users/store");
  144.                     HttpStringContent httpStringContent = new HttpStringContent(jsonString);
  145.                     try
  146.                     {
  147.                         httpResponseMessage = await httpClient.PostAsync(uri, httpStringContent);
  148.                     }
  149.                     catch (Exception ex)
  150.                     {
  151.                         MessageBox.Show(ex.Message);
  152.                     }
  153.  
  154.                 }
  155.                 else
  156.                 {
  157.                     return false;
  158.                 }
  159.             }
  160.             catch (Exception ex)
  161.             {
  162.                 MessageBox.Show(ex.Message, "Information", MessageBoxButton.OK);
  163.             }
  164.            
  165.            
  166.             //creamoms el jaon object
  167.             return true;
  168.         }
  169. #el codigo este me salta cuando
  170. #despues de colocar el codigo anterior me salta al app.xaml.cs este
  171. private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
  172.         {
  173.             if (Debugger.IsAttached)
  174.             {
  175.                 // A navigation has failed; break into the debugger
  176.                 Debugger.Break();
  177.             }
  178.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement