在使用Postman测试我的Web API时,API可以正常执行!
但是当在客户端应用程序中使用HttpClient
运行代码时,代码执行没有错误,但服务器上没有预期的结果。这是什么原因呢?
来自我的客户端应用程序:
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控制器:
[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中调用时可以按预期工作。
HttpClient
应该作为单个实例重复使用。将其包装在using
语句中或为每个调用创建一个新的实例可能会产生不良影响。 - maccetturaHttpClient
是为数不多的几个实例之一,在每次使用后都不需要立即处理。 - maccettura