[解決済み] HttpClientのBaseAddressが機能しないのはなぜですか?
2022-03-22 18:09:45
質問
次のコードを考えてみましょう。
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 どうなってるんだ?
解決方法は?
の末尾または先頭のスラッシュを含むか含まないかの4つの可能な組み合わせのうち、1つの組み合わせにしかならないことがわかりました。
BaseAddress
に渡される相対URIと
GetAsync
メソッド -- あるいは、他のどのメソッドであっても
HttpClient
-- のみ
一
の順列が機能します。 あなたは
しなければならない
の末尾にスラッシュを付けます。
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");
}
自分自身の質問に答えたとはいえ、やはりこの不親切な動作は文書化されていないため、解決策をここに寄稿しようと思いました。同僚と私は一日中、最終的にこの奇妙な
HttpClient
.
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] C#でHashtableよりDictionaryが好まれる理由とは?
-
[解決済み] HttpClientリクエストのContent-Typeヘッダーはどのように設定するのですか?
-
[解決済み] 複数のタスクにasync/awaitを使用する
-
[解決済み] await/asyncを使用しているときにHttpClient.GetAsync(...)が返らない
-
[解決済み】HttpClientとHttpClientHandlerはリクエストの間にディスポされなければならないのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015