Tôi đang cố sử dụng lớp System.Net.HttpClient
để đăng tin nhắn lên Google Cloud Messaging.Đặt chuỗi tùy chỉnh vào tiêu đề "Ủy quyền" trong System.Net.HttpClient
Google Cloud nhắn đòi hỏi bạn phải bao gồm một tiêu đề gọi là "ủy quyền", trong một định dạng tương tự như sau:
key=AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0Lu8D
Nhưng lớp HttpClient
ném một ngoại lệ khi tôi cố gắng này.
string keyString = "key=AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0LJ0w";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Foo", keyString); // <== Proving I can
client.DefaultRequestHeaders.Add("Authorization", keyString); // Exception thrown
Ngoại lệ là loại System.FormatException
. Thông điệp là
Định dạng của giá trị 'key = AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0LJ0w' là không hợp lệ.
Và callstack là:
at System.Net.Http.Headers.HttpHeaderParser.ParseValue(String value, Object storeValue, Int32& index)
at System.Net.Http.Headers.HttpHeaders.ParseAndAddValue(String name, HeaderStoreItemInfo info, String value)
at System.Net.Http.Headers.HttpHeaders.Add(String name, String value)
Làm thế nào tôi có thể nhận được tiêu đề này vào bài yêu cầu này mà không có một ngoại lệ được ném?
Ngẫu nhiên, tôi đã sáng tác một bài như thế này sử dụng Fiddler, và nó hoạt động:
Headers:
User-Agent: Fiddler
Authorization: key=AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0Lu8D
Host: android.googleapis.com
Content-Length: 220
Content-Type: application/json
Request Body:
{
"registration_ids" : ["APA91bEM6XPdiZv5VgNNApakfyYfZwB871018Hljl1L27kaPvksasnR0bHlmcCZFxOSPD6bDLMZgvgfT9xsKnF6Tg0oSQM2cMM1KRbuK7cR7jICqAnSDYg_SvERTzPMT8puXGTlVkEVH6dsneBkXiBu6pZikWXWyRATAVbXnAHTe20-nQerb0"],
}
Bạn đã cố gắng đặt thuộc tính 'Ủy quyền' trên tiêu đề thay vì cố gắng' Thêm' một cái mới? –
Và cũng 'client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue ("key", "AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0LJ0w"); ' –
@Joel Allison: Tôi cố gắng đó, và sau đó là tiêu đề là "chìa khóa AIzaSyBxFuZ9IbtGbJHX6F5wdTc1mHnB7i0LJ0w". Nó không bao gồm dấu '='. –