首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么HttpClient BaseAddress不工作?

为什么HttpClient BaseAddress不工作?
EN

Stack Overflow用户
提问于 2014-05-03 07:25:07
回答 2查看 131.6K关注 0票数 421

考虑以下代码,其中BaseAddress定义了部分URI路径。

using (var handler = new HttpClientHandler())
using (var client = new HttpClient(handler))
{
    client.BaseAddress = new Uri("http://something.com/api");
    var response = await client.GetAsync("/resource/7");
}

我希望这将执行一个对http://something.com/api/resource/7GET请求。但事实并非如此。

经过一番搜索,我找到了这个问题和答案:HttpClient with BaseAddress。建议将/放在BaseAddress的末尾。

using (var handler = new HttpClientHandler())
using (var client = new HttpClient(handler))
{
    client.BaseAddress = new Uri("http://something.com/api/");
    var response = await client.GetAsync("/resource/7");
}

它还是不能工作。这是文档:HttpClient.BaseAddress这是怎么回事?

EN

回答 2

Stack Overflow用户

发布于 2021-04-07 04:09:01

我在BaseAddress上也遇到了同样的问题。我决定根本不使用BaseAddress,最简单的解决方案是添加一个简单的一行代码:

Uri GetUri(string path) => new Uri("http://something.com/api" + path);

那么你的代码就会变成:

Uri GetUri(string path) => new Uri("http://something.com/api" + path);
using (var handler = new HttpClientHandler())
using (var client = new HttpClient(handler))
{
    // Remove BaseAddress completely
    // client.BaseAddress = new Uri("http://something.com/api");
    var response = await client.GetAsync(GetUri("/resource/7"));
}

我没有调查过使用BaseAddress的利弊,但对我来说,这是完美无瑕的。希望这对某些人有帮助。

票数 1
EN

Stack Overflow用户

发布于 2019-03-18 03:43:46

遇到了HTTPClient的问题,即使有了建议,它仍然无法进行身份验证。原来我的相对路径中需要一个尾随的'/‘。

var result = await _client.GetStringAsync(_awxUrl + "api/v2/inventories/?name=" + inventoryName);
var result = await _client.PostAsJsonAsync(_awxUrl + "api/v2/job_templates/" + templateId+"/launch/" , new {
                inventory = inventoryId
            });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23438416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档