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