Bonjour,
Je m'interroge sur ce qui est le plus préférable d'utiliser pour une récupération d'un flux JSON lors de la consommation d'une WebAPI Rest
1/ La méthode Asynchrone du style :
Ou bien
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
34
35
36
37 static HttpClient client = new HttpClient(); static async Task<string> GetJson(string WebApiURL) { var request = new HttpRequestMessage(HttpMethod.Get, WebApiURL); var response = await client.SendAsync(request); try { response.EnsureSuccessStatusCode(); } catch { return ""; } string Json = await response.Content.ReadAsStringAsync(); return Json; } static async Task<HorsesProgram.Programme> GetHorsesProgram(string Journey) { string Content = await GetJson($"{Root.AbsoluteUri}7/programme/{Journey}"); HorsesProgram.Rootobject RootObject = JsonConvert.DeserializeObject<HorsesProgram.Rootobject>(Content)!; return RootObject.programme!; } private static void Main(string[] args) { string Journey = "14112024"; client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HorsesProgram.Programme HorsesPrograms = GetHorsesProgram(Journey).Result; }
2/ La méthode synchrone
Vos informations et remarques sont les bien venues
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 private static string CallApi(string UrlApi) { var client = new RestClient(UrlApi); var request = new RestRequest(); request.AddHeader("Accept", "application/json"); request.AddHeader("Content-Type", "application/json;charset=UTF-8"); var response = client.Get(request); if (response.StatusCode == System.Net.HttpStatusCode.OK) { return response.Content!; } return ""; } private void getPrograms() { string URL = $"{Root.AbsoluteUri}/7/programme/{DTP_Day.Value.ToString("ddMMyyyy")}"; string rawResponse = CallApi(URL); HorsesProgram = null; if (rawResponse != string.Empty) HorsesProgram = JsonConvert.DeserializeObject<HorsesProgram.Rootobject>(rawResponse)!; }
Merci à vous.
Partager