HttpClient PostAsync
Il tutorial di oggi sara’ molto veloce, senza molte parole e soprattutto sara’ codice.
Vi ricordate il tutorial che ho scritto questa estate dal titolo “HttpClient GetAsync - Asynchronous Coding & Performance” dove mostravo come utilizzavo HttpClient e il GetAsync per fare richieste ed ottenere in modalita’ TAP (Task asynchronous programming) i risultati delle diverse API?
Per l’articolo di oggi ho scritto la versione equivalente, ma per effettuare chiamate PostAsync passando in un JSON il nostro dto di tipo T.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| public async Task<string> PostAsync<T>(string url, T dto)
{
using (HttpClient client = new HttpClient())
{
string json = JsonConvert.SerializeObject(dto);
// using System.Net.Http
var content = new StringContent(json);
// using System.Net.Http.Headers;
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var result = await client.PostAsync(url, content);
var response = await result.Content.ReadAsStringAsync();
if (result.IsSuccessStatusCode == false)
{
// Log Failure ...
}
return response;
}
}
|
PostAsync T
Come vedete il codice e’ davvero molo semplice. Riprendendo lo stile del vecchio articolo vi mostrero’ un esempio pratico molto stilzzato su come usarlo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| private async void DoTest()
{
Task<string> message1Async = PostAsync<FirstTestDTO>("https:// ...", myFirstTestDTO);
Task<string> message2Async = PostAsync<SecondTestDTO>("https:// ...", mySecondTestDTO);
Task<string> message2Async = PostAsync<ThirdTestDTO>("https:// ...", myThirdTestDTO);
// you can do other code ...
string message1 = await message1Async;
// you can do other code based on message1 ...
string message2 = await message2Async;
// you can do other code based on message2 ...
string message3 = await message3Async;
}
|
Ed ora non vi resta che provarlo su API reali dove passare il vostro DTO.
Link Utili