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