【问题标题】:how to use HttpClient Async & Await to post FCM message如何使用 HttpClient Async & Await 发布 FCM 消息
【发布时间】:2017-02-04 07:04:55
【问题描述】:

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

【问题讨论】:

    标签: c# firebase http-headers httpclient firebase-cloud-messaging


    【解决方案1】:

    替换代码中的行

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

    【讨论】:

    • 谢谢。现在我在'使用(var r = await client.PostAsJsonAsync(new Uri(uri),json))'行中遇到BAD REQUEST问题。不确定它是因为 'var json' 值。但是代码在 WebRequest 中运行良好。
    • @PajaniArjunan 您可以将 postData 打印为字符串吗?看看JSON结构是否正确?
    • @PajaniArjunan 我添加了示例代码检查,如果您需要更多帮助,请告诉我
    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多