gpt4 book ai didi

c# - HttpClient GetAsync 未按预期工作

转载 作者:行者123 更新时间:2023-11-30 18:58:24 31 4
gpt4 key购买 nike

当使用 Postman 测试我的 Web API 时,我的 API 执行得很好!

当谈到在我的客户端应用程序中使用 HttpClient 运行代码时,代码执行时没有错误,但在服务器上没有预期的结果。会发生什么?

来 self 的客户端应用程序:

private string GetResponseFromURI(Uri u)
{
var response = "";
HttpResponseMessage result;
using (var client = new HttpClient())
{
Task task = Task.Run(async () =>
{
result = await client.GetAsync(u);
if (result.IsSuccessStatusCode)
{
response = await result.Content.ReadAsStringAsync();
}
});
task.Wait();
}
return response;
}

这是 API Controller :

[Route("api/[controller]")]
public class CartsController : Controller
{
private readonly ICartRepository _cartRepo;

public CartsController(ICartRepository cartRepo)
{
_cartRepo = cartRepo;
}

[HttpGet]
public string GetTodays()
{
return _cartRepo.GetTodaysCarts();
}

[HttpGet]
[Route("Add")]
public string GetIncrement()
{
var cart = new CountedCarts();
_cartRepo.Add(cart);

return _cartRepo.GetTodaysCarts();
}

[HttpGet]
[Route("Remove")]
public string GetDecrement()
{
_cartRepo.RemoveLast();
return _cartRepo.GetTodaysCarts();
}


}

请注意,这些 API 调用在从 Postman 调用时按预期工作。

最佳答案

您不应该将 await 与 client.GetAsync 一起使用,它由 .Net 平台管理,因为您一次只能发送一个请求。

就这样用吧

var response = client.GetAsync("URL").Result;  // Blocking call!

if (response.IsSuccessStatusCode)
{
// Parse the response body. Blocking!
var dataObjects = response.Content.ReadAsAsync<object>().Result;

}
else
{
var result = $"{(int)response.StatusCode} ({response.ReasonPhrase})";
// logger.WriteEntry(result, EventLogEntryType.Error, 40);
}

关于c# - HttpClient GetAsync 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43148155/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com