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);
另见
我正在使用 "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);
另见