Retour Json d'un appel a un web service
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 :
Code:
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;
} |
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.
Voici mon dernier essai en date :
Code:
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;
}
} |
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.
Merci d'avance :)