1. ホーム
  2. c#

[解決済み] HttpClientのヘッダを追加すると、ある値でFormatExceptionが発生する

2023-02-04 11:09:59

質問

これは Google Cloud Messaging に対するコーディングのコンテキストで発生したものですが、他の場所にも当てはまります。

次のように考えてください。

var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("key=XXX");

var http = new HttpClient();
http.DefaultRequestHeaders.Add("Authorization", "key=XXX");

の両方がFormatExceptionを発生させます。

System.FormatException : value key=XXX' のフォーマットは無効です。

解決策は、等号を削除することです。

  1. reflector を掘り下げてみると、新しいヘッダー値を追加するときに実行される検証および解析コードが大量にあることがわかります。なぜこのようなことが必要なのでしょうか? このクライアントは、私たちの邪魔をしないようにするだけでよいのではないでしょうか?

  2. この値を追加することが成功するように、どのように等号をエスケープしますか?

どのように解決するには?

まだ関連性があるかどうかはわかりませんが、私は最近この同じ問題に遭遇し、ヘッダー情報を追加するために別のメソッドを呼び出すことによってそれを解決することができました。

var http = new HttpClient();
http.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=XXX");