HttpClient get在放入异步方法时不起作用



我正试图在方法调用中使用它来从源获取字符串

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(url);
string responseBody = await response.Content.ReadAsStringAsync();
Console.Write(responseBody);

当在方法和类之外使用时,它可以很好地处理我的url,并返回我要查找的正确字符串。然而,当我把它放在我的类和方法中时,它就不再做任何事情了。没有错误,只是不返回任何内容。

作为参考,我使用的方法看起来像这个

public async void get(String test) {
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(test);
string responseBody = await response.Content.ReadAsStringAsync();
Console.Write(responseBody);

}

我不知道为什么一旦我把它放进一个方法中,它就会停止工作。

让你的方法返回一个任务,它就可以了

public async Task get(String test)
{
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(test);
string responseBody = await response.Content.ReadAsStringAsync();
Debug.Write(responseBody);
}
private async void btnTest_Click(object sender, EventArgs e)
{
try
{
Task t = get("https://stackoverflow.com/questions/71787949/c-sharp-httpclient-get-does-not-work-when-put-in-async-method");
IEnumerable<Task> tasks = new[] { t };
await Task.WhenAll(tasks);
}
catch (Exception oException)
{
Debug.WriteLine(oException.ToString());
}
}

最新更新