c# - 如何从任务 httpResponse 中获取信息?
问题描述
我正在使用异步方法调用 API,该方法返回我在任务中需要的信息,但我无法在 winform 的文本框中显示我需要的信息。
这是方法:
public static async Task<Token> GetTokenAsync()
{
Token token = new Token();
string path = @"URL";
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 = "DSAE_PHID_RECETTE",
password = "testpwd1"
};
//ENVOIE DE LA REQUETE ET RECUPERATION DE LA REPONSE
HttpResponseMessage apiResponse = await client.PostAsJsonAsync(client.BaseAddress, requestBody);
//RECUPERATION DES INFORMATION DU RETOUR DE L'API
if (apiResponse.IsSuccessStatusCode)
{
var response = await apiResponse.Content.ReadAsStringAsync();
token.idToken = response;
return token;
}
else
{
return null;
}
}
这是尝试显示
private void btnEnvoyer_Click(object sender, EventArgs e)
{
Task<Token> tokentask = RequeteHttp.GetTokenAsync();
// txtResult.Text = tokentask.Result.ToString();
}
如果我取消注释它会冻结的线。
我知道任务中有一些我不完全理解的东西,但即使有所有的例子,我也无法让它工作。
提前致谢。
解决方案
事件处理程序是很少见的地方,您可以在其中使用async void
. 所以你应该尝试这样的事情:
private async void btnEnvoyer_Click(object sender, EventArgs e)
{
var token = await RequeteHttp.GetTokenAsync();
txtResult.Text = token.ToString();
}
推荐阅读
- python - 调用方法时持续出现“未找到”错误
- docker - 在容器启动时在同一容器内卷曲 API
- python - 调用 PythonScript 任务时,AzDevops SelfHosted Agent 生成 ENOENT 错误
- c# - 对 AddHttpClient 的重复调用会相互覆盖吗?
- javascript - 如何使用 vanilla js 创建无限拖动滑块
- swiftui - 如何在 .animation() 期间访问 @Binding 的当前值
- javascript - 如何确保文本对 SVG 有效?
- r - 如何将类名添加到 terra SpatRaster 中的数值栅格值?
- python - 用于实时识别的 TensorFlow Lite 推理
- sql - 如何在静止值转换为日期时删除列中的第一个值