【发布时间】:2015-05-13 12:14:23
【问题描述】:
我对 .Net 很陌生,我正在尝试在调用休息方法后检索数据
我的函数其实是这样的:
private Task<HttpResponse> getUser(string user)
{
string url = "http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=" + user + "&api_key=xxx&format=json";
var client = new HttpClient();
return client.GetAsync(url).ContinueWith(request =>
{
var response = request.Result;
response.EnsureSuccessStatusCode();
return response.Content.ReadAsStringAsync().ContinueWith(t =>
{
var result = new HttpResponseMessage();
response.CreateContent(t.Result);
return response;
});
}).Unwrap();
}
但我收到此错误:
'System.Net.Http.HttpResponseMessage' 不包含定义 对于 'CreateContent' 并且没有扩展方法 'CreateContent' 接受 'System.Net.Http.HttpResponseMessage' 类型的第一个参数可以 被发现(您是否缺少 using 指令或程序集引用?)
也许我只是忘记了一些东西,但即使经过一番搜索,我也没有找到任何解决方案。 有没有其他方法可以解决?
感谢您的帮助
【问题讨论】:
-
如果你使用异步,你应该使用
await关键字,这样它读起来更像同步代码,更容易理解。你的 lambdas 让你很难理解你的代码流。此外,HttpResponseMessage 上没有CreateContent()方法。也许您只想设置 Content 属性? -
在C# HttpClient 和Don't Block on Async Code 有一个很好的例子来说明你正在尝试做的事情。正如梅森所说,使用 await 而不是 lambdas。
-
@feras Salim : 这篇文章是我在编写代码时所期待的
-
您使用的是哪个 .Net 版本??
标签: c# asp.net asp.net-mvc