当放置在异步方法中时,HttpClient get不起作用。

28 浏览
0 Comments

当放置在异步方法中时,HttpClient get不起作用。

这个问题已经有了答案:

async/await - 何时返回任务(Task)和空(void)?

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

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

在方法和类之外使用它时,它可以正常工作,并且返回我要查找的正确的字符串。但是,当我将它放入我的类和方法中时,它就不起作用了。没有错误,只是什么也不返回。

为了参考,我使用的方法看起来像这样

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);
    }

我不知道为什么一旦放进方法里就停止工作了。

admin 更改状态以发布 2023年5月22日
0
0 Comments

让你的方法返回一个任务,它就可以工作了。 \n

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("/question/64566");
        IEnumerable tasks = new[] { t };
        await Task.WhenAll(tasks);
    }
    catch (Exception oException)
    {
        Debug.WriteLine(oException.ToString());
    }
}

0