C sharp - Recuperar datos RESTful API

 
Vista:
sin imagen de perfil
Val: 23
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Recuperar datos RESTful API

Publicado por Mendizalea (14 intervenciones) el 17/05/2018 18:58:48
Estoy intentando recuperar los datos desde un Rest API que tengo en el servidor web. Tengo el siguiente método el cual funciona pero tiene un par de problemas. He realizado un formulario para probar con 2 botones y 2 ritchtextbox, para mostrar en uno de ellos los eventos y en el otro las vueltas.

1.- En la API tengo puesta como obligatoria el header Content-Type = application/json y un token de 60 caracteres. El token funciona bien, pero el tema del Content-Type no funciona, si quito en el API si que me devuelve los datos pero en cambio si lo activo no. En cambio, con la aplicion posman funciona bien el tema del content-type.

2.- Por otra parte, si hago click en el boton para obtener los eventos, en el primer click no muestra nada, tengo que pulsar por segunda vez y es cuando lo muestra. Despues, si hago click en el de laps en el primer click muestra en el ritchtextbox de laps los eventos y en un segundo click es cuando ya muestra las vueltas. Va mostrando los datos con un retardo de un click.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public static string json { get; private set; }
 
    public Form1()
    {
        InitializeComponent();
    }
 
    private void Form1_Load(object sender, EventArgs e)
    {
 
    }
 
    static async Task<string> CallWebAPIAsync(string url)
    {
        using (var client = new HttpClient())
        {
            var apiToken = "92taXs69Dhy6zPH7NM2q0vNn3gLdaKA6YV0oHc0cXdN1Hf8eTCdf1jBxUYlI";
            client.BaseAddress = new Uri("https://www.webencuestion.com/api/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "application/json");
            client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Add("api-token", apiToken);
 
            //GET Method
            HttpResponseMessage response = await client.GetAsync(url);
            if (response.IsSuccessStatusCode)
            {
                json = response.Content.ReadAsStringAsync().Result;
            }
            else
            {
                json = "Internal server Error";
            }
        }
        return json;
    }
 
    private void BtnEvents_Click(object sender, EventArgs e)
    {
        CallWebAPIAsync("events");
        RtbEvents.Text = json;
    }
 
    private void BtnLaps_Click(object sender, EventArgs e)
    {
        CallWebAPIAsync("events/24/laps");
        RtbLaps.Text = json;
    }
}

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder