正确的方法来处理JSON字符串中的&符号发送到REST Web服务
好,
我正在使用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转换为byte[]
并写入Stream
。 和,
request.ContentType = "application/x-www-form-urlencoded";
作为WebRequest.ContentType
。
那么,我是不是因为某种原因而搞砸了?
谢谢。
问题是我正在编码整个请求字符串,包括密钥。 我有一个请求data={JSON}
,我正在格式化它,但{JSON}
部分只应编码。
string requestData = "data=" + Uri.EncodeDataString(json) // worked perfect!
愚蠢的洞进入。
您是否尝试用&
更换&符号&
对于POST?