HttpClient の BaseAddress: 詳細を見る
この記事では、HttpClient
の BaseAddress
プロパティのよく誤解される動作を明確にします。 多くの開発者は、部分的に定義された BaseAddress
を使用して URI を構築するときに、予期しない結果に遭遇します。 GET
リクエストが常に意図したターゲットに到達するように、問題を詳細に分析し、正しい使用法を提示します。
問題: 予期しない URI の構築
BaseAddress
を "https://www.php.cn/link/b683cc41556d5055c15033c86a75861c" に設定し、GetAsync
の相対 URI として "/resource/7" を使用すると、次のように見えるかもしれません。結果は次のようになります「https://www.php.cn/link/b683cc41556d5055c15033c86a75861c/resource/7」。 ただし、これは通常失敗します。 BaseAddress
に末尾のスラッシュを追加しても ("https://www.php.cn/link/b683cc41556d5055c15033c86a75861c/") も成功は保証されません。
不足している部分: ドキュメントと実践的なアプリケーション
公式ドキュメントでは BaseAddress
を「Web リソースのベース アドレス」として言及していますが、スラッシュの重要な役割についての明確なガイダンスが欠けています。 実験を通じて、解決策は明らかになります:
BaseAddress
には末尾のスラッシュ (/) が必要です。GetAsync
の相対 URI は、先頭のスラッシュ (/) で始めることはできません。正しい実装
次のコードは、成功した組み合わせを示しています。
<code class="language-csharp">using (var handler = new HttpClientHandler()) using (var client = new HttpClient(handler)) { client.BaseAddress = new Uri("https://www.php.cn/link/b683cc41556d5055c15033c86a75861c/"); var response = await client.GetAsync("resource/7"); }</code>
これは正しく「https://www.php.cn/link/b683cc41556d5055c15033c86a75861c/resource/7」をターゲットとしています。
結論: 信頼性の高い HTTP リクエストのための BaseAddress の習得
HttpClient
の BaseAddress
を効果的に使用するには、スラッシュの配置を正確に理解する必要があります。 上記のガイドライン (BaseAddress
に末尾のスラッシュを使用し、相対 URI に先頭のスラッシュを付けない) に従うことで、開発者は HTTP リクエストで一貫性のある予測可能な動作を保証できます。 この一見些細な詳細により、デバッグ時の重大な問題を防ぐことができます。
以上がHttpClient BaseAddress が期待どおりに機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。