如何使用 HttpClient Async & Await 发布 FCM 消息



我正在努力使用HttpClient来发布FCM消息。我收到无效的标头格式异常。 我可以使用WebRequest发布 FCM 消息。但是我想通过使用HttpClient尝试异步和等待。

请建议我哪个是最好的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>
}

替换代码中的行

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();

最新更新