缺少HttpClient对象方法

时间:2015-04-28 15:47:05

标签: c#

我将一些代码从网站中分离出来,在复制了相关特定页面后面的代码后,我在PostAsJsonAsync()代码行中收到错误:

HttpResponseMessage response = await client.PostAsJsonAsync("api/...", user);

在此using语句中(也添加了标题)

        using System;
        using System.Net.Http;
        using System.Net.Http.Headers;
        using System.Net.Mail;
        using System.Threading.Tasks;
        //...

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("WebServiceAddress");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = await client.PostAsJsonAsync("api/...", user);
            if (response.IsSuccessStatusCode)
            {
                const string result = "Thank you for your submission.";
                return result;
            }
            //...
        }

我得到的错误是

 Error  4   'System.Net.Http.HttpClient'
 does not contain a definition for 'PostAsJsonAsync' and no extension
 method 'PostAsJsonAsync' accepting a first argument of type 'System.Net.Http.HttpClient'
 could be found (are you missing a using directive or an assembly reference?)

即使它在前一个项目中有效,也完全从该项目中复制过来。我忘了添加一些东西吗?

我很感激有关此事的任何帮助。

3 个答案:

答案 0 :(得分:26)

您必须添加以下依赖项

System.Net.Http.Formatting.dll

它应该在扩展中 - >组装

您可以添加Microsoft.AspNet.WebApi.Client nuget包

答案 1 :(得分:2)

我编写了自己的扩展方法,因为我认为该方法仅适用于较旧的.NET API,并使用了Newtonsoft JSON序列化程序:

// Extension method to post a JSON
public static async Task<HttpResponseMessage> PostAsJsonAsync(this HttpClient client, string addr, object obj)
{
    var response = await client.PostAsync(addr, new StringContent(
            Newtonsoft.Json.JsonConvert.SerializeObject(obj),
            Encoding.UTF8, "application/json"));

    return response;
}

答案 2 :(得分:0)

即使安装了相应的Nuget包,我也遇到了同样的错误。帮助我的只是using声明:

using System.Net.Http;