如何在 C# (.NET 4.5) 中为 HttpClient.GetAsync(URI) 创建回调?
Posted
技术标签:
【中文标题】如何在 C# (.NET 4.5) 中为 HttpClient.GetAsync(URI) 创建回调?【英文标题】:How do I create a callback in C# (.NET 4.5) for HttpClient.GetAsync(URI)? 【发布时间】:2013-02-01 11:29:12 【问题描述】:我想为 Google 搜索创建一个简单的异步请求。
根据谷歌的说法,最简单的方法是使用他们的 JSON API 和简单的 curl 请求
curl -e http://www.my-ajax-site.com \ 'https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton'
我想提取前 5 页结果并将每个结果的 URL 添加到数组中。我发现很难在 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);
我想这应该启动一个任务,这样我就不会阻塞主线程,但是我如何为请求完成注册一个回调方法?
【问题讨论】:
只需rq.GetAsync(uri).Result
等待它。
@leppie 我不想等待它,我将使用另一个 API 来执行此操作,我可能会运行 10-15 个线程。
【参考方案1】:
由于 GetAsync 是您可以执行的任务
rq.GetAsync(uri).ContinueWith((requestTask) => SomeMethod(requestTask););
【讨论】:
还有一个;
,导致语法错误,应该是:rq.GetAsync(uri).ContinueWith((requestTask) => SomeMethod(requestTask));跨度>
异步任务完成后是否会发生这种情况?【参考方案2】:
HttpResponseMessage response = await rq.GetAsync(uri);
//put here your continuation logic.
【讨论】:
@TimeSheep 你是什么意思?你不wait
你await
。阅读async/await
关键字。
是的,我意识到这是一个误解......我会尝试这个,一旦我有时间完成它,我会选择适合我的答案:)以上是关于如何在 C# (.NET 4.5) 中为 HttpClient.GetAsync(URI) 创建回调?的主要内容,如果未能解决你的问题,请参考以下文章
.NET 4.5 和 C# 中带有 HttpClient 的 HTTP HEAD 请求
如何使用 Oracle 和 SQL Server 将 .NET 4.5 C# Entity Framework 6 中的列映射为大写?
c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结转载
WPF 工具包,如何在 C# 中为日期选择器控件应用日期格式?