我正在努力使用HttpClient
发布FCM消息。我收到无效的标头格式异常。我可以使用WebRequest
发布FCM消息。但我想通过使用HttpClient尝试Async和Await。
请建议我哪个是最好的HttpClient或WebRequest。
<div>
<br>String uri;
<br>uri = "https://fcm.googleapis.com/fcm/send";
<br>var postData = new
<br>{
<br>to = DeviceID,
<br>data = new
{
MessageID = enquiryid
},<br>
<br>notification = new
{
body = enquirymessage,
title = FromUser,
icon = "myicon"
}<br>
};<br>
<br>var serializer = new JavaScriptSerializer();
<br>var json = serializer.Serialize(postData);<br>
<br>using (var client = new HttpClient())
<br>{
<p>client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue
("key", "=" + fcmDetails.SERVER_API_KEY);<br>
<p>client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue
("application/json"));
<p>client.DefaultRequestHeaders.Add("Sender: id ", "="+ fcmDetails.PROJECT_KEY);
<p>using (var r = client.PostAsJsonAsync(new Uri(uri), json))
<br>{
<br>string result = await r.Content.ReadAsStringAsync();
<br>sResponseFromServer= result;
}<br>
}
答案 0 :(得分:2)
替换代码中的行
client.DefaultRequestHeaders.Add("Sender: id ", "="+ fcmDetails.PROJECT_KEY);
带
client.DefaultRequestHeaders.Add("Sender", "id=" + fcmDetails.PROJECT_KEY);
Use the sample code
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://fcm.googleapis.com/fcm/");
client.DefaultRequestHeaders
.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/json"));//ACCEPT header
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("key", "=" + fcmDetails.SERVER_API_KEY);
client.DefaultRequestHeaders.Add("Sender","id=" + fcmDetails.PROJECT_KEY);
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "relativeAddress");
var data = new
{
to = DeviceID,
notification = new
{
body = "This is the message",
title = "This is the title",
icon = "myicon"
}
};
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(data);
request.Content = new StringContent(json,
Encoding.UTF8,
"application/json");//CONTENT-TYPE header
var data1 = client.PostAsync("send", request.Content);
var d = data1.Result.Content.ReadAsStringAsync();