行,
我使用的是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
。
所以,我是因为某种原因而错过了吗?
谢谢。
答案 0 :(得分:5)
问题是我正在编码整个请求字符串,包括密钥。
我收到了data={JSON}
请求,我正在对其进行格式化,但{JSON}
部分只能进行编码。
string requestData = "data=" + Uri.EncodeDataString(json) // worked perfect!
愚蠢的洞进入。
答案 1 :(得分:2)
您是否尝试使用&
替换&符号进行POST?