繁体   English   中英

发送gcm推送通知时缺少Unicode字符

[英]unicode characters are missing on sending gcm push notifications

我正在通过C#代码中的gcm发送推送通知。 当我用英语发送数据时,它工作正常。 但是,当数据中有任何unicode印地语字符时,我在android设备上获取的json中便缺少该字符。 请帮助我。 我的代码如下-

 public string SendNotification(string deviceId, string message)
    {

        var value = message;
        WebRequest tRequest;
        tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send");
        tRequest.Method = "post";
        tRequest.ContentType = " application/x-www-form-urlencoded;charset=unicode UTF-8";
        tRequest.Headers.Add(string.Format("Authorization: key={0}", GoogleAppID));

        tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID));

        string postData = "delay_while_idle=1&data.data=" + value + "&registration_id=" + deviceId + "";
        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;
    }

分析代码后,我知道这是编码问题。 然后通过在我的代码的Line下面更改-

 string postData = "delay_while_idle=1&data.data=" + value + "&registration_id=" + deviceId + ""; 

 string postData = "delay_while_idle=1&data.data=" +  HttpUtility.UrlEncode(value) + "&registration_id=" + deviceId + "";

一切正常。 我将其发布在这里是因为我认为它可能会对其他有此类问题的人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM