C# 如何使用HttpClient异步&;等待发布FCM消息

C# 如何使用HttpClient异步&;等待发布FCM消息,c#,firebase,http-headers,httpclient,firebase-cloud-messaging,C#,Firebase,Http Headers,Httpclient,Firebase Cloud Messaging,我正在努力使用HttpClient发布FCM消息。我收到无效的标题格式异常。我可以使用WebRequest发布FCM消息。但我想尝试使用HttpClient作为异步并等待 请建议我哪个是最好的HttpClient或WebRequest <div> <br>String uri; <br>uri = "https://fcm.googleapis.com/fcm/send"; <br>var postData = new <br>{

我正在努力使用
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>
}


字符串uri;
uri=”https://fcm.googleapis.com/fcm/send";
var postData=new
{
to=设备ID,
数据=新 { MessageID=inquiryid },

通知=新 { body=查询消息, title=FromUser, icon=“myicon” }
};

var serializer=新的JavaScriptSerializer();
var json=serializer.Serialize(postData)

使用(var client=new HttpClient())
{ client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue (“key”,“=”+fcmDetails.SERVER\u API\u key);
client.DefaultRequestHeaders.Accept.Add(新MediaTypeWithQualityHeaderValue (“应用程序/json”); client.DefaultRequestHeaders.Add(“发送方:id”,“=”+fcmDetails.PROJECT_KEY); 使用(var r=client.PostAsJsonAsync(新的Uri,json))
{
字符串结果=wait r.Content.ReadAsStringAsync();
sResponseFromServer=结果; }
}

替换代码中的行

client.DefaultRequestHeaders.Add("Sender: id ", "="+ fcmDetails.PROJECT_KEY);


非常感谢。现在我在“使用(var r=await client.postasjssonasync(新Uri(Uri),json))”行中遇到了错误请求的问题。由于“var json”值的原因,不确定其是否正确。但是代码在WebRequest中运行良好。@PajaniArjunan您能将postData打印为字符串吗?看看JSON结构是否正确?@PajaniArjunan我已经添加了示例代码检查一下,如果需要更多帮助,请告诉我
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();