1

我很努力使用HttpClient張貼FCM消息。我得到無效的標題格式異常。我可以使用WebRequest發佈FCM消息。但我想通過使用HttpClient嘗試Async和Await。如何使用HttpClient異步和等待張貼FCM消息

請建議我哪個是最好的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

替換行代碼中的

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

謝謝。現在,我正在使用(var r = await client.PostAsJsonAsync(new Uri(uri),json))'在BAD REQUEST中遇到問題。不確定它是因爲'var json'的值。但代碼在** WebRequest **中工作正常。 –

+0

@PajaniArjunan你可以打印postData爲String嗎?看看JSON結構是否正確? –

+0

@PajaniArjunan我已添加示例代碼檢查,並讓我知道如果你需要任何更多的幫助 –