我试图从我的web应用程序调用一个web API。我使用。net 4.5,在编写代码时,我得到了错误HttpClient不包含定义PostAsJsonAsync方法。

下面是代码:

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:51093/");
client.DefaultRequestHeaders.Accept.Add(
   new MediaTypeWithQualityHeaderValue("application/json"));
var user = new Users();
user.AgentCode = 100;
user.Remarks = "Test";
user.CollectionDate = System.DateTime.Today;
user.RemittanceDate = System.DateTime.Today;
user.TotalAmount = 1000;
user.OrgBranchID = 101;

var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;

我得到了错误信息:

错误:“System.Net.Http。的定义 'PostAsJsonAsync'和没有扩展方法'PostAsJsonAsync'接受的第一个参数 “System.Net.Http类型。HttpClient'可以被找到(你丢失了吗 using指令还是程序集引用?)

请您看一下并给我建议。


当前回答

您可以使用internet上的一种包装器,而不是编写这么多代码来进行简单的调用。

我写了一个叫WebApiClient的程序,可以在NuGet上找到…点击这里查看详情!

https://www.nuget.org/packages/WebApiRestService.WebApiClient/

其他回答

您可以使用internet上的一种包装器,而不是编写这么多代码来进行简单的调用。

我写了一个叫WebApiClient的程序,可以在NuGet上找到…点击这里查看详情!

https://www.nuget.org/packages/WebApiRestService.WebApiClient/

我在一个刚从源代码控制部门签出的项目中也遇到了这个问题。

症状是上面描述的错误和System.Net.Http.Formatting引用上的黄色警告三角形

为了解决这个问题,我删除了损坏的引用,然后使用NuGet安装最新版本的Microsoft.AspNet.WebApi.Client。

现在是2020年世界末日,你可以在NuGet包System.Net.Http.Json中找到这些方法。但要注意它在内部使用System.Text.Json。

如果您确实需要找出哪个API位于何处,只需使用https://apisof.net/

只是在评论中扩展了杰伦的答案和建议:

var content = new StringContent(
    JsonConvert.SerializeObject(user), 
    Encoding.UTF8, 
    MediaTypeNames.Application.Json);

var response = await client.PostAsync("api/AgentCollection", content);

PostAsJsonAsync不再在System.Net.Http.dll(。净4.5.2)。您可以添加对System.Net.Http.Formatting.dll的引用,但这实际上属于较旧的版本。我在我们的TeamCity构建服务器上遇到了这个问题,这两个不能一起合作。

或者,你可以用一个PostAsync调用替换postasjsonasync,这只是new dll的一部分。 取代

var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;

:

var response = client.PostAsync("api/AgentCollection", new StringContent(
   new JavaScriptSerializer().Serialize(user), Encoding.UTF8, "application/json")).Result;

注意JavaScriptSerializer位于命名空间System.Web.Script.Serialization中。

您必须在csproj: System.Web.Extensions.dll中添加程序集引用

参见https://code.msdn.microsoft.com/windowsapps/How-to-use-HttpClient-to-b9289836