HttpClient 的 BaseAddress:仔细观察
本文澄清了 HttpClient
的 BaseAddress
属性经常被误解的行为。 许多开发人员在使用部分定义的 BaseAddress
构造 URI 时遇到意外结果。我们将剖析问题并提出正确的用法,以确保您的 GET
请求始终达到预期目标。
问题:意外的 URI 构造
将 BaseAddress
设置为“http://something.com/api”,然后在 GetAsync
中使用“/resource/7”作为相对 URI看起来应该会导致“http://something.com/api/resource/7”。 然而,这通常会失败。 在 BaseAddress
(“http://something.com/api/”)中添加尾部斜杠也不能保证成功。
缺失的部分:文档和实际应用
虽然官方文档提到 BaseAddress
作为“网络资源的基地址”,但它缺乏关于正斜杠关键作用的明确指导。 通过实验,解决方案变得清晰:
BaseAddress
需要尾随正斜杠 (/)。GetAsync
中的相对 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/7”。
结论:掌握可靠 HTTP 请求的 BaseAddress
HttpClient
的BaseAddress
的有效使用取决于对斜杠位置的精确理解。 通过遵循上述准则(BaseAddress
中的尾部斜杠,并且相对 URI 中没有前导斜杠),开发人员可以确保其 HTTP 请求中的行为一致且可预测。 这个看似微不足道的细节可以防止重大的调试难题。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3