为了账号安全,请及时绑定邮箱和手机立即绑定

为什么HttpClient BaseAddress不起作用?

为什么HttpClient BaseAddress不起作用?

C#
皈依舞 2019-12-11 13:09:43
考虑以下代码,其中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");}我希望这能向发出GET请求http://something.com/api/resource/7。但事实并非如此。经过一些搜索,我找到了这个问题和答案:HttpClient与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这是怎么回事?
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

参考解析由RFC 3986统一资源标识符(URI):通用语法描述。这正是它应该如何工作的。要保留基本URI路径,您需要在基本URI的末尾添加斜杠,并在相对URI的开始处删除斜杠。


如果基本URI包含非空路径,则合并过程将丢弃它的最后一部分(在last之后/)。相关部分:


5.2.3。合并路径


上面的伪代码是指“合并”例程,用于将相对路径引用与基本URI的路径合并。这可以通过以下方式完成:


如果基本URI具有已定义的权限组件和空路径,则返回由“ /”和引用路径组成的字符串。除此以外


返回一个字符串,该字符串包含附加到基本URI路径的最后一段之外的所有引用的引用的路径部分(即,排除基本URI路径中最右边的“ /”之后的任何字符,或者排除整个基本URI路径)不包含任何“ /”字符)。


如果相对URI以斜杠开头,则称为绝对路径相对URI。在这种情况下,合并过程将忽略所有基本URI路径。有关更多信息,请检查5.2.2。变换参考部分。



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 277 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信