none
Consumir web service para enviar json RRS feed

  • Pregunta

  • Amigos tengo que consumir un web service para el envio de informacion en formato json.

    Para esto me han dado las siguientes indicaciones

    Se ha generado una API HTTP JSON que es un método muy eficiente de realizar integraciones

    Actualizar valores adeudados por código de estudiante:

    Este método permite actualizar el monto total adeudado y un detalle de los valores pendientes por parte del estudiante mediante tomando como parámetro el código de estudiante.

    RUTA COMPLETA:
    https://escuela.academi-cloud.net/ext_ws/integracion_escuela/actualizar_deuda_por_codigo
    EndPoint:
    /ext_ws/integracion_escuela/actualizar_deuda_por_codigo
    Method: POST
    Params:
    • {api_key}: clave de autorización
    • {codigo}: código del estudiante
    • {valor_adeudado}: valor total adeudado
    • {valores_pendientes}: arreglo con el detalle de los valores pendientes de pago
    Request Ejemplo:
    {
     "api_key":  "############",
     "codigo":  "0885-E",
     "valor_adeudado": 120.65,
     "valores_pendientes":  [
      {
        "numero_factura" :  "001-001-0003875".
        "fecha" :  "01-02-2018",
        "monto_total" :  "120.65",
        "detalles" : [
          { "concepto" : "Pensión Enero", "valor" : "100.15" },
          { "concepto" : "Pensión Febrero", "valor" : "20.50" }
         ]
       }
     ]
    }
    Resultado: Estructura JSON:

    • resultado: (true, false) indicador de resultado de la acción
    • mensaje: mensaje de la acción realizada
    Ejem. Resultado: {
    “resultado”: true,
    “mensaje”: “Registro Actualizado Correctamente”
    }

    Ahora lo que no se es como consumir este web service, buscando veo que no pued agregar una referencia de servicio a mi sitio porque no es soap, algunos ejemplos indican que debo usar httpclient.

    Alguien tiene algun ejemplo que pueda usar para realizar el consumo de un webservice de este tipo?

    jueves, 1 de febrero de 2018 2:41

Respuestas

  • Hola

    Claro, utiliza httpclient y newtonsfot json, no olvides de referenciar estas librerías a través de nuget packages.

    Te dejo unos enlaces para que le eches un ojo, incluso puedes conseguir videos al respecto, por ejemplo en youtube: "Consumir api json desde .net o c#"

    Call a Web API From a .NET Client (C#)

    How to Consume a JSON REST API in .NET

    Saludos


    Brayan De la Cruz
    Lima - Perú

    jueves, 1 de febrero de 2018 4:38
  • Gracias Brayan por la ayuda, estoy intentando consumirlo en base a los enlaces que me diste pero no lo logro aun no se si me puedenn ayudar

    tengo esto

     using (var client = new HttpClient())
                {
                    // Establecer la url que proporciona acceso al servidor que publica la API 
                    client.BaseAddress = new Uri("https://escuela.academi-cloud.net/ext_ws/integracion_escuela/actualizar_deuda_por_codigo");
                    // Configurar encabezados para que la petición de realice en formato JSON
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    
                    //Add headers
                    client.DefaultRequestHeaders.Add("api_key", "CSp1TqLIAe5PH1eIYEEmX6gItBYxt");
                    client.DefaultRequestHeaders.Add("codigo", "1162");
                    client.DefaultRequestHeaders.Add("valor_adeudado", "600");
                    client.DefaultRequestHeaders.Add("valores_pendientes", "[ { 'numero_factura': '001 - 001 - 00000001', 'fecha': '14 - 05 - 2020', 'monto_total': '500', 'detalles': [ { 'concepto': 'Pensión Enero 2018', 'valor': '200.89' }, { 'concepto': 'Pensión Febrero 2018', 'valor': '300.50' } ] } ]");
    
                    //Call client.PostAsJsonAsync to send a POST request to the appropriate URI   
                    HttpResponseMessage resp = await client.PutAsync(); 
                    
                    //This method throws an exception if the HTTP response status is an error code.  
                    //var xx = resp.EnsureSuccessStatusCode();
                    if (resp.IsSuccessStatusCode)
                    {
                      
                    }
                    else
                    {
                        var resultado = resp.Content.ReadAsStringAsync().Result;
                        var result = JsonConvert.DeserializeObject<ResultServer>(resultado);
                        throw new Exception(string.Format("Message:{0}, ExceptionMessage: {1}", result.Message, result.ExceptionMessage));
                    }
    
                    
    
    
                }
    
            }


    En esta linea no se como llamar al web service que le paso  al metodo PutAsync

    HttpResponseMessage resp = await client.PutAsync(); 

    y en esta como leo el resultaso

                      

     if (resp.IsSuccessStatusCode)
                    {

                    }

    Saludos

    viernes, 2 de febrero de 2018 23:33

Todas las respuestas

  • Hola

    Claro, utiliza httpclient y newtonsfot json, no olvides de referenciar estas librerías a través de nuget packages.

    Te dejo unos enlaces para que le eches un ojo, incluso puedes conseguir videos al respecto, por ejemplo en youtube: "Consumir api json desde .net o c#"

    Call a Web API From a .NET Client (C#)

    How to Consume a JSON REST API in .NET

    Saludos


    Brayan De la Cruz
    Lima - Perú

    jueves, 1 de febrero de 2018 4:38
  • Gracias Brayan por la ayuda, estoy intentando consumirlo en base a los enlaces que me diste pero no lo logro aun no se si me puedenn ayudar

    tengo esto

     using (var client = new HttpClient())
                {
                    // Establecer la url que proporciona acceso al servidor que publica la API 
                    client.BaseAddress = new Uri("https://escuela.academi-cloud.net/ext_ws/integracion_escuela/actualizar_deuda_por_codigo");
                    // Configurar encabezados para que la petición de realice en formato JSON
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    
                    //Add headers
                    client.DefaultRequestHeaders.Add("api_key", "CSp1TqLIAe5PH1eIYEEmX6gItBYxt");
                    client.DefaultRequestHeaders.Add("codigo", "1162");
                    client.DefaultRequestHeaders.Add("valor_adeudado", "600");
                    client.DefaultRequestHeaders.Add("valores_pendientes", "[ { 'numero_factura': '001 - 001 - 00000001', 'fecha': '14 - 05 - 2020', 'monto_total': '500', 'detalles': [ { 'concepto': 'Pensión Enero 2018', 'valor': '200.89' }, { 'concepto': 'Pensión Febrero 2018', 'valor': '300.50' } ] } ]");
    
                    //Call client.PostAsJsonAsync to send a POST request to the appropriate URI   
                    HttpResponseMessage resp = await client.PutAsync(); 
                    
                    //This method throws an exception if the HTTP response status is an error code.  
                    //var xx = resp.EnsureSuccessStatusCode();
                    if (resp.IsSuccessStatusCode)
                    {
                      
                    }
                    else
                    {
                        var resultado = resp.Content.ReadAsStringAsync().Result;
                        var result = JsonConvert.DeserializeObject<ResultServer>(resultado);
                        throw new Exception(string.Format("Message:{0}, ExceptionMessage: {1}", result.Message, result.ExceptionMessage));
                    }
    
                    
    
    
                }
    
            }


    En esta linea no se como llamar al web service que le paso  al metodo PutAsync

    HttpResponseMessage resp = await client.PutAsync(); 

    y en esta como leo el resultaso

                      

     if (resp.IsSuccessStatusCode)
                    {

                    }

    Saludos

    viernes, 2 de febrero de 2018 23:33