好的,
我正在使用System.Runtime.Serialization
和DataContractJsonSerialization
。
问题是在请求中我发送了一个带有&
字符的属性值。说,,AT&T
我得到一个错误的响应:Invalid JSON Data
。
我认为转义将在库内完成,但现在我看到序列化未触及 &&
字符。
是的,对于 JSON 格式,这是有效的。但这对我的 POST 请求来说将是一个问题,因为我需要将其发送到服务器,如果该服务器包含 & 符号,则会以错误响应,因此我在这里。
HttpUtility.HtmlEncode
在System.Web
图书馆里,所以要走的路是使用Uri.EscapeUriString
. 我这样做是为了尝试,但无论如何,如果没有它,所有请求都可以正常工作,除了&符号在一个值中。
编辑:HttpUtility
类被移植到 Windows Phone SDK,但编码字符串的首选方式应该是Uri.EscapeUriString
.
第一个想法是弄脏手并开始替换会导致服务器出现问题的特殊字符,但是,我想知道我应该做的另一种解决方案是高效且“正确”的吗?
我应该告诉我使用
// Convert the string into a byte array.
byte[] postBytes = Encoding.UTF8.GetBytes(data);
将 JSON 转换为 abyte[]
并写入Stream
. 和,
request.ContentType = "application/x-www-form-urlencoded";
作为WebRequest.ContentType
.
那么,我是因为什么原因而搞砸了还是我想念什么?
谢谢你。