Android GCM unicode字符未被接收

Android GCM unicode字符未被接收,第1张

概述这是我的服务器端代码或 Android端代码. 此代码仅适用于英文邮件.如果我使用Unicode字符,如使用阿拉伯语,那么它不会显示阿拉伯语. 在英语阿拉伯语混合的原因中,它跳过了唯一的阿拉伯语宪章. 请给我解决办法. 谢谢! 这是我的C#代码 private string SendNotification(string authstring, string id, string msg) 这是我的服务器端代码或 Android端代码.
此代码仅适用于英文邮件.如果我使用Unicode字符,如使用阿拉伯语,那么它不会显示阿拉伯语.
在英语阿拉伯语混合的原因中,它跳过了唯一的阿拉伯语宪章.

请给我解决办法.
谢谢!

这是我的C#代码

private string SendNotification(string authstring,string ID,string msg)    {        try        {            ServicePointManager.ServerCertificateValIDationCallback = (object sender,X509Certificate certificate,X509Chain chain,SslPolicyErrors sslPolicyErrors) => true;            WebRequest request = WebRequest.Create("https://androID.GoogleAPIs.com/gcm/send");            request.Method = "POST";            request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";            request.headers.Add(string.Format("Authorization: key={0}",authstring));            string collaspeKey = GuID.NewGuID().ToString("n");            string postData = string.Format("registration_ID={0}&data.payload={1}&collapse_key={2}",ID,msg,collaspeKey);            byte[] byteArray = EnCoding.UTF8.GetBytes(postData);            request.ContentLength = byteArray.Length;            Stream dataStream = request.GetRequestStream();            dataStream.Write(byteArray,byteArray.Length);            dataStream.Close();            WebResponse response = request.GetResponse();            dataStream = response.GetResponseStream();            StreamReader reader = new StreamReader(dataStream);            string responseFromServer = reader.ReadToEnd();            reader.Close();            dataStream.Close();            response.Close();            return responseFromServer;        }        catch (Exception ex)        {            throw ex;        }    }

这是我的AndroID端代码,捕获消息.

@OverrIDeprotected voID onMessage(Context context,Intent intent) {            String message = arabicUtilitIEs.reshape(intent.getExtras().getString("payload"));}
解决方法 André Oriani
有一个修正的概念.即使消息被放置在请求的正文中,仍然需要对URL进行编码.
string postData = string.Format("registration_ID={0}&data.payload={1}&collapse_key={2}",collaspeKey);

应该换成

string postData = string.Format("registration_ID={0}&data.payload={1}&collapse_key={2}",httpUtility.UrlEncode(msg),httpUtility.UrlEncode(collaspeKey));

您将需要添加对System.Web的引用才能使用httpUtility.有关更多信息,请参阅URL Encoding using C#.

总结

以上是内存溢出为你收集整理的Android GCM unicode字符未被接收全部内容,希望文章能够帮你解决Android GCM unicode字符未被接收所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1132205.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存