El control httpwebrequest con llamada post y get en c# ✅


¿Cómo usar un json con c#?

El código para llamar a la API es realizar una solicitud GET a la url. Necesitamos colocar las propiedades del objeto httpwebrequest en función de lo que necesitamos desarrollar, en este ejemplo, lo que vamos a hacer. es traer datos desde una api de "servicio web", a través de httpwebrequest post c # y httpwebrequest get c # lo que hará es lanzar un JArray para revisar el objeto y traer datos específicos del nodo "company" para luego asignarlos a un variable y guardar esos datos en una base de datos de servidor sql.

¿Cómo funciona el httpwebrequest?

En primer instancia tenemos que colocar la ruta del servicio, es importante que la ruta sea correcta para que no tenga errores al hacer la authentication, en esta ruta del servicio les mostraremos como add parameter que en este caso es el usuario "username_" para que nos traiga sus datos en específico de ese usuario como se muestra en el (Ejemplo 1.-), tenemos dos ejemplos en los cuales colocamos de diferente forma el parámetro del usuario en el (Ejemplo 2.-) se le asigna el parámetro en la cadena del Json a diferencia del anterior que se le paso en la ruta del servicio esto depende de la documentación de cada servicio en cómo se debe de consumir, en estos dos ejemlos utilizaremos el httpwebrequest contenttype con la propiedad application/json ya que en los dos ejemplos consumiremos un Json sin embargo ponemos los dos ejemplos.


                    Ejemplo 1.- 
                      
                          String cadena = "https://development.spyasociados.com/api/users/" + username_ + "/employment";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(cadena);
httpWebRequest.ContentType = "application/json";

                    Ejemplo 2.- 
                    
                          String cadena = "https://development.spyasociados.com/api/users/executeAPIcall";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(cadena);
httpWebRequest.ContentType = "application/json";
string jsonApi = "{'apiUsername':'corporativo'," + "'apiPassword':'asd333rrg5/$3'," + "'apicallsetinput':[{" + "'_apicall':'read'," + "'event_id':3234," + "'users':'" + username_ + "' " + "}]}";

Tenemos dos formas de consumir el servicio, httpwebrequest add header o httpwebrequest credentials.

Como lo comentamos anteriormente esto depende del consumo de la api de cada servicio, te mostramos dos formas en el (Ejemplo 1.-) se agrega un header en el cual se utiliza el nodo Authorization con el control httpWebRequest.Headers.Add(...) y se lo coloca un token con el cual se autentica el usuario para que pueda consumir todos los servicios por medio del control httpwebrequest get c#, esto lo hacen para tener seguridad e integridad en sus datos de consumo haciendo la llamada del control httpwebrequest de forma async. En el (Ejemplo 2.-) se le coloca como parámetro un usuario y una contraseña como httpwebrequest authentication.


                    Ejemplo 1.- 
                      
                          httpWebRequest.Headers.Add("Authorization", "ClaveAccesoasdasdasdas2342352#?0");
                      
                    

                    Ejemplo 2.- 
                    
                            string jsonApi = "{'apiUsername':'corporativo', 'apiPassword':'asd35/$3'," + ....
                           
                      
                    


Tipo de método para la llamada asíncrona al servicio ya sea como httpwebrequest post c# o httpwebrequest get c#.

La llamada o el consumo de la información del servicio se puede hacer de dos formas pos (power-on self-test, llamada al servicio "detrás de" o "después de") O get (envía los datos usando la url) dependiendo de cómo lo requiera el servicio, te mostramos los ejemplos:


                      Ejemplo 1.- 
                        
                            httpWebRequest.Method = "GET";
                        
                      

                    Ejemplo 2.- 
                    
                            httpWebRequest.Method = "POST";
                           
                      
                    

Cómo extraer datos de la cadena Json con el control httpWebRequest.GetRequestStream()

A continuación te mostraremos como utilizar el control httpWebRequest.GetRequestStream() para extraer datos de la cadena Json y convertir la cadena de texto de un Json a un JArray, en el (Ejemplo 1.-) se utiliza el control StreamReader ya que solo se utilizará para lectura del servicio autenticándose con el token requerod con el control httwebrequest credentials y se utiliza el parse a JArray para castear la cadena de entrada a JArray, posteriormente se recorre el objeto con un foreach entrando a sus propiedades del Json y se encontrara el nodo "empresa" para extraer el dato requerido como se muestra en el ejemplo a diferencia del (Ejemplo 2.-) en este utilizamos el control StreamWriter ya que escribimos en el servicio colocando el usuario, contraseña y tipo de evento haciendo el post ya que está es la forma te autenticarse y de pasarle el usuario del cual necesitamos sus datos, posteriormente con el objeto JsonConvert.DeserializeObject(numero); entramos al Json sin castearlo ya que nos regresa un Json puro y de esta forma nos traemos sus datos como se muestra en el ejemplo.


                      Ejemplo 1.- 
                      
                          var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                            {
                                //Extraer datos de la cadena Json 
                                var result = streamReader.ReadToEnd();
                                //Convertir la cadena de texto de un Json a n JArray
                                JArray jsonPreservar = JArray.Parse(result);
                                foreach (JObject jsonOperaciones in jsonPreservar.Children< JObject>())
                                {
                                    //Aqui para poder identificar las propiedades y sus valores
                                    foreach (JProperty jsonOPropiedades in jsonOperaciones.Properties())
                                    {
                                        //Debes recorrer el arreglo completo, asi puedes obtener todos los valores de las propiedades
                                        string propiedad = jsonOPropiedades.Name;
                                        //Leer Json y sacar valor de un campo
                                        if (propiedad.Equals("empresa"))
                                        {
                                            //Recorrer Json tomando parte de los valores
                                            var val = Convert.ToString(jsonOPropiedades.Value);
                                            dynamic jsonObj = JsonConvert.DeserializeObject(val);
                                            String Distribuidor = Convert.ToString(jsonObj["Id"].ToString());
                                            return Distribuidor;
                                        }
                                    }
                                }

                                JObject data = JObject.Parse(jsonPreservar[0].ToString());
                                var id = Convert.ToInt32(data["id"]);
                                return "";
                            }
                      
                    

                    Ejemplo 2.- 
                    
                                using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                                  {
                                      string jsonApi = "{'apiUsername':'corporativo'," +
                                      "'apiPassword':'asd333rrg5/$3'," +
                                      "'apicallsetinput':[{" +
                                      "'_apicall':'read'," +
                                      "'event_id':3234," +
                                      "'users':'" + username_ + "' " +
                                      "}]}";

                                      streamWriter.Write(jsonApi);
                                      streamWriter.Flush();
                                      streamWriter.Close();
                                  }

                                  var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                                  using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                                  {
                                      var result = streamReader.ReadToEnd();
                                      dynamic jsonObj = JsonConvert.DeserializeObject(result);
                                      var numero = jsonObj["apicallsetoutput"][0].ToString();
                                      dynamic jsonObj_ = JsonConvert.DeserializeObject(numero);
                                      _apicallresultcode = Convert.ToInt16(jsonObj_["_apicallresultcode"].ToString());

                                      if (_apicallresultcode == 1)
                                      {
                                          _id = Convert.ToInt32(jsonObj_["id"].ToString());
                                      }
                                  }
                           
                      
                    

Para finalizar te dejamos todo el codigo del httpwebrequest post c# con todos los parameters.

Aquí colocamos el código de c sharp completo de los dos ejemplos para que apliques el que más te sirva para tu desarrollo de tu sistema, en conclusión podemos observar en estos dos ejemplos del httpwebrequest en c# que en el (Ejemplo 1.-) se utiliza el objeto httpwebrequest authorization header bearer para poder tener acceso al servicio a diferencia del (Ejemplo 2.-) se utilizan usuario y contraseña para no utilizar el Headers, otra diferencia es que en el (Ejemplo 1.-) se hace el cast al objeto JArray.Parse(result); para poder recorrer el Json, sin más preámbulos te dejo que observes el código, espero que te sirvan estos ejemplos.


                      Ejemplo 1.- 
                      
                          
                            private String extraerDatosJsonR(String username_)
                             {
                                String cadena = "https://development.forwardcompany.com/api/users/" + username_ + "/employment";

                                var httpWebRequest = (HttpWebRequest)WebRequest.Create(cadena);
                                httpWebRequest.ContentType = "application/json";
                                httpWebRequest.Method = "GET";
                                httpWebRequest.Headers.Add("Authorization", "ClaveAccesoasdasdasdas2342352#?0");
                                try
                                {
                                    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                                    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                                    {
                                        //Extraer datos de la cadena Json 
                                        var result = streamReader.ReadToEnd();
                                        //Convertir la cadena de texto de un Json a n JArray
                                        JArray jsonPreservar = JArray.Parse(result);
                                        foreach (JObject jsonOperaciones in jsonPreservar.Children< JObject>())
                                        {
                                            //Aqui para poder identificar las propiedades y sus valores
                                            foreach (JProperty jsonOPropiedades in jsonOperaciones.Properties())
                                            {
                                                //Debes recorrer el arreglo completo, asi puedes obtener todos los valores las propiedades
                                                string propiedad = jsonOPropiedades.Name;
                                                //Leer Json y sacar valor de un campo
                                                if (propiedad.Equals("empresa"))
                                                {
                                                    //Recorrer Json tomando parte de los valores
                                                    var val = Convert.ToString(jsonOPropiedades.Value);
                                                    dynamic jsonObj = JsonConvert.DeserializeObject(val);
                                                    String Empresa = Convert.ToString(jsonObj["Id"].ToString());
                                                    return Empresa;
                                                }
                                            }
                                        }
                                        JObject data = JObject.Parse(jsonPreservar[0].ToString());
                                        var id = Convert.ToInt32(data["id"]);
                                        return "";
                                    }
                                }
                                catch (WebException ex)
                                {
                                    //Log de errores.
                                    String error = ex.Message;
                                    return "";
                                }

                            }
                          
                      
                    

                     Ejemplo 2.- 
                     
                         private Int64 existeUsuario(String username_ , String Perfil)
                          {
                                  String cadena = "https://development.spyasociados.com/api/users/executeAPIcall";

                                   var httpWebRequest = (HttpWebRequest)WebRequest.Create(cadena);
                                  httpWebRequest.ContentType = "application/json";
                                  httpWebRequest.Method = "POST";
                                  Int16 _apicallresultcode = 0;
                                  String entitlement_group = "";
                                  Boolean mismoPerfil = false;
                                  Int64 id = 0;
                                  using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                                  {
                                      string jsonApi = "{'apiUsername':'corporativo'," +
                                      "'apiPassword':'asd333rrg5/$3'," +
                                      "'apicallsetinput':[{" +
                                      "'_apicall':'read'," +
                                      "'event_id':3234," +
                                      "'users':'" + username_ + "' " +
                                      "}]}";

                                      streamWriter.Write(jsonApi);
                                      streamWriter.Flush();
                                      streamWriter.Close();
                                  }

                                  var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                                  using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                                  {
                                      var result = streamReader.ReadToEnd();
                                      dynamic jsonObj = JsonConvert.DeserializeObject(result);
                                      var numero = jsonObj["apicallsetoutput"][0].ToString();
                                      dynamic jsonObj_ = JsonConvert.DeserializeObject(numero);
                                      _apicallresultcode = Convert.ToInt16(jsonObj_["_apicallresultcode"].ToString());

                                      if (_apicallresultcode == 1)
                                      {
                                          _id = Convert.ToInt32(jsonObj_["id"].ToString());
                                          //PERFIL ACTUAL DE LA API 
                                          try
                                          {
                                              dynamic events = jsonObj_.events["1415"];
                                              entitlement_group = events.entitlementgroup_name;
                                          }catch(Exception ex){}
                                          //PERFIL ACTUAL DE T.NET
                                          
                                          //HttpContext.Current.Session["entitlement_group"] = Perfil.ToString().Trim();
                                          entitlement_groupActual = Perfil.ToString().Trim();
                                          //COMPARAMOS PERFILES SI ES DIFERETTEN DEBEMOS DE ACTUALIZARLO EN EL API
                                          try
                                          {
                                              if (Perfil.ToString().Trim() == entitlement_group.ToString().Trim())
                                                  mismoPerfil = true;
                                              else
                                              {
                                                  String pp = jsonObj_["id"];
                                                  id = Convert.ToInt64(pp);
                                              }
                                          }
                                          catch (Exception ex) {

                                              String pp = jsonObj_["id"];
                                              id = Convert.ToInt64(pp);
                                          
                                          }
                                      }
                         
                                  }
                                  if (_apicallresultcode == 0)
                                      return 2;//NO existe

                                  if (_apicallresultcode == 1 & mismoPerfil == true)
                                      return 1;//Si existe y tiene el mismo perfil
                                  else
                                  {
                                      return id;//Si existe pero tiene diferente perfil, se tiene que eliminar el registro y dar de alta con el nuevo perfil.
                                  }
                              }
                           
                      
                    

Escribe tus comentarios sobre este articulo espero que te haya servido la explicación de estos objetos: httpwebrequest post c# y httpwebrequest get c#.


Nombre Comentarios
{{ ds.fcNombre_ }} {{ ds.fcComentarios_ }}


Write your comments on this article I hope you have served the explanation of these objects: httpwebrequest post c # and httpwebrequest get c#.


{{ blog.bio }}

{{ blog.comentario }}

NOMBRE *
CORREO ELECTRÓNICO
COMENTARIOS *

Los datos personales que sean recopilados por spyasociados.com, a través de sus diferentes puntos de recepción, serán protegidos y tratados con fundamento en las disposiciones de la Ley Federal de Protección de Datos Personales en posesión de los particulares.