Bonjour à tous !
J'essaie depuis plusieurs heure d'afficher dans une textbox d'un winform, un retour d'appel asynchrone d'une API.
Voici ma fonction :
Elle fonctionne trés bien, je vois la valeur dont j'ai besoin, seulement lorsque j'essaie de récuperer cette valeur pour l'afficher dans la textbox, le winform freeze.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 static HttpClient client = new HttpClient(); public static async Task<Token> GetTokenAsync(string path) { Token token = null; using (var client = new HttpClient()) { //URL + HEADER DE LA REQUETE client.BaseAddress = new Uri(path); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); //MIS EN FORME DU JSON D'AUTHENTIFICATION var requestBody = new { username = "test", password = "testpwd1" }; //ENVOIE DE LA REQUETE HttpResponseMessage apiResponse = await client.PostAsJsonAsync(client.BaseAddress, requestBody); //RECUPERATION DES INFORMATION DU RETOUR DE L'API if (apiResponse.IsSuccessStatusCode) { var documentResponse = await apiResponse.Content.ReadAsStringAsync(); dynamic response = JsonConvert.DeserializeObject(documentResponse); token.idToken = response[0].Value; } } return token; }
Voici mon dernier essai en date :
De ce que je comprend il s'agit d'une task qui bloque quelquepart mais malgré mes recherches et tentative je n'y arrive pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private void btnEnvoyer_Click(object sender, EventArgs e) { string path = textBoxURL.Text; if (cbTypeWS.Text == "TOKEN") { Task<Token> token = RequeteHttp.GetTokenAsync(path); string result = token.GetAwaiter().GetResult().ToString(); txtResult.Text = result; } }
Merci d'avance
Partager