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服务。

如果你需要更多细节,请告诉我。谢谢你的帮助!

HttpClient获取同一网站内的数据

您必须提供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
    }
}