处理发送到 REST Web 服务的 JSON 字符串中的与号字符的正确方法
本文关键字:字符 方法 字符串 JSON REST 服务 Web 处理 | 更新日期: 2023-09-27 18:30:47
>OK,
我正在使用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 的&
?