2015-11-29 145 views
2

我正在尝试在c#中编写web api以在android设备中发送推送通知。这给我401未经授权的错误。我已按照所有步骤发送通知。我无法理解为什么我不授权用户。GCM给出错误:(401)未授权

这里是我的函数发送通知。

public String Post(string message, string regId) 
     { 
      try 
      { 


       WebRequest tRequest; 
       tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send"); 
       tRequest.Method = "post"; 
       tRequest.ContentType = "application/json"; 
       tRequest.Headers.Add(string.Format("Authorization: key=**server-api-key**")); 

       tRequest.Headers.Add(string.Format("Sender: id=**sender-id**")); 

       string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message=" 
        + message + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + regId + ""; 


       Console.WriteLine(postData); 
       Byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
       tRequest.ContentLength = byteArray.Length; 

       Stream dataStream = tRequest.GetRequestStream(); 
       dataStream.Write(byteArray, 0, byteArray.Length); 
       dataStream.Close(); 

       WebResponse tResponse = tRequest.GetResponse(); 

       dataStream = tResponse.GetResponseStream(); 

       StreamReader tReader = new StreamReader(dataStream); 

       String sResponseFromServer = tReader.ReadToEnd(); 

       tReader.Close(); 
       dataStream.Close(); 
       tResponse.Close(); 
       return sResponseFromServer; 
      } 
      catch (Exception e) 
      { 
       throw; 
      } 
     } 

enter image description here

服务器密钥1

和发件人ID获取API密钥从

enter image description here

项目编号

我的帖子功能接受消息和regId是设备ID。

回答

0

我不知道C#并且可能会丢失一些东西。它看起来像你的发布数据不是JSON格式。我没有看到任何括号。 This SO question提供了如何发布JSON格式数据的示例。

此外,请尝试使用curl验证您的API密钥,如this example中所述。