95

これは、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 : 値 key=XXX' の形式が無効です。

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

  1. リフレクターを掘り下げると、新しいヘッダー値を追加するときに実行される検証および解析コードがたくさんあることがわかります。なぜこれが必要なのですか?このクライアントは私たちの邪魔をするべきではありませんか?

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

4

6 に答える 6

214

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

var http = new HttpClient();
http.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=XXX");
于 2013-03-06T08:12:02.250 に答える