GCM 发送带有特殊字符的 JSon 消息

GCM send JSon message with special characters

我正在使用 "application/json"(下游 HTTP 消息 (JSON))从我的 C# 服务器发送 GCM。一切正常,我的 Android 设备收到消息。

但问题是:如果我发送特殊字符,如 ä ë á é 或类似字符,则会出现此错误:

WebException: System.Net.WebException: The request was aborted: The request was canceled. ---> System.IO.IOException: Cannot close stream until all bytes are written.

我尝试使用:

HttpUtility.UrlEncode("my méssägë hérë")

但后来我在 Android 中收到格式错误的消息。 对如何正确编码字符串有帮助吗?

我解决了改变:

using (StreamWriter oWriter = new StreamWriter(req.GetRequestStream()))
{  oWriter.Write(msg);
}

有了这个:

Byte[] byteArray = Encoding.UTF8.GetBytes(msg);
req.ContentLength = byteArray.Length; <-- important
Stream writer = req.GetRequestStream();
writer.Write(byteArray, 0, byteArray.Length);

另见