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

时间:2016-03-15 17:51:46

标签: c# .net json google-cloud-messaging encode

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

但问题是:如果我发送像äëé或类似的特殊字符,那么我会收到此错误:

  

WebException:System.Net.WebException:请求已中止:   请求已取消。 ---> System.IO.IOException:无法关闭流   直到写完所有字节。

我尝试使用:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="sort-list">
  <li class="sort-item" data-event-date="14/02/2016">Valentine's Day</li>
  <li class="sort-item" data-event-date="25/12/2016">Christmas</li>
  <li class="sort-item" data-event-date="25/12/2016">New Years</li>
  <li class="sort-item" data-event-date="14/06/2016">Bastille Day</li>
  <li class="sort-item" data-event-date="01/01/2016">New Year's Day</li>
  <li class="sort-item" data-event-date="31/10/2016">Halloween</li>
</ul>

然后我以错误的格式收到Android中的消息。 任何帮助如何正确编码字符串?

1 个答案:

答案 0 :(得分:0)

我解决了改变:

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);

另见here