【问题标题】:How to get the data with a rest api?如何使用 rest api 获取数据?
【发布时间】: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# HttpClientDon't Block on Async Code 有一个很好的例子来说明你正在尝试做的事情。正如梅森所说,使用 await 而不是 lambdas。
  • @feras Salim : 这篇文章是我在编写代码时所期待的
  • 您使用的是哪个 .Net 版本??

标签: c# asp.net asp.net-mvc


【解决方案1】:

我找到了解决办法。

解决方案:添加对 System.Net.Http.Formatting.dll 的引用。 此程序集也可在 C:\Program Files\Microsoft ASP.NET\ASP.NET 中找到MVC 4\Assemblies 文件夹。

方法ReadAsAsync是类HttpContentExtensions中声明的扩展方法,在System.Net.Http.Formatting库的命名空间System.Net.Http中。

反射器来救援了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2020-12-05
    • 1970-01-01
    • 2023-02-13
    • 2018-12-21
    • 2020-03-08
    • 1970-01-01
    相关资源
    最近更新 更多