如何在C#(.NET 4.5)中为HttpClient.GetAsync(URI)创建回调?

时间:2013-02-01 11:29:12

标签: c# asynchronous .net-4.5 dotnet-httpclient

我想为Google搜索创建一个简单的异步请求。

根据谷歌的说法,最简单的方法是使用他们的JSON API和简单的卷曲请求

curl -e http://www.my-ajax-site.com \ 'https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton'

我想提取前5页的结果,并将每个结果的网址添加到数组中。我发现在HttpClient.GetAsync上找到任何解释良好的教程都难以置信。 我还没有比这更进一步:

public String[] search(String term = "")
{
    var rq = new HttpClient();
    var uri = new Uri("https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=site:" + term);
    rq.GetAsync(uri);
}

我想这应该启动一个任务,所以我不会阻止主线程,但是如何在请求完成时注册一个回调方法?

2 个答案:

答案 0 :(得分:6)

由于GetAsync是您可以执行的任务

     rq.GetAsync(uri).ContinueWith((requestTask) => SomeMethod(requestTask););

答案 1 :(得分:4)

HttpResponseMessage response = await rq.GetAsync(uri);

//put here your continuation logic.