
此代码仅适用于英文邮件.如果我使用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字符未被接收所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)