HttpClient获取同一网站内的数据
本文关键字:数据 网站 获取 HttpClient | 更新日期: 2023-09-27 18:19:33
我正在尝试使用HttpClient调用同一网站下的web api端点。
我目前的iis设置如下-
Main Website
- Application1
- WebApiApp
在Application1中,我试图使用HttpClient调用WebApiApp中的Webapi控制器。如果我在下面的代码中指定m_service的完整url,它就会起作用-
using (HttpResponseMessage serviceResponse = await Client.GetAsync(new Uri(m_service + serviceEndPoint), HttpCompletionOption.ResponseHeadersRead))
{
return CreateResponse(serviceResponse);
}
由于这个应用程序在同一个网站下,我想使用相对路径从web api获取数据。我尝试这样做的原因是,这个网站在多个Web服务器上运行,并且使用网络负载均衡器。使用WebApiApp控制器的完整url会增加通过负载均衡器的额外开销。我想在同一台服务器上访问web api服务。
如果你需要更多细节,请告诉我。谢谢你的帮助!
您必须提供HTTP请求的基本地址才能工作(我以为您已经准备好了)。只有相对URI不是有效的URL。
API是否在同一个站点下并不重要,Web客户端需要完整的URL来请求。因此,在您的情况下,您可以在基本地址中设置localhost。以下是中的示例代码http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client.
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:9000/");
// code removed
HttpResponseMessage response = await client.GetAsync("api/products/1");
if (response.IsSuccessStatusCode)
{
// do something
}
}