处理发送到 REST Web 服务的 JSON 字符串中的与号字符的正确方法

本文关键字:字符 方法 字符串 JSON REST 服务 Web 处理 | 更新日期: 2023-09-27 18:30:47

>OK,

我正在使用System.Runtime.SerializationDataContractJsonSerialization.

问题是在请求中我发送了一个带有&字符的属性值。说,AT&T,我得到一个错误的响应:Invalid JSON Data

以为转义将在库内完成,但现在我看到序列化没有触及与号&字符。

是的,对于 JSON 格式,这是有效的。但是这对我的 POST 请求来说将是一个问题,因为我需要将其发送到一个服务器,如果包含与号,该服务器将响应错误,因此我在这里。

HttpUtility.HtmlEncodeSystem.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.

那么,我搞砸了是出于某种原因还是错过了什么?

谢谢。

处理发送到 REST Web 服务的 JSON 字符串中的与号字符的正确方法

问题是我正在编码整个请求字符串,包括密钥。我有一个请求data={JSON}并且我正在格式化它,但{JSON}部分应该只编码。

string requestData = "data=" + Uri.EncodeDataString(json) // worked perfect!

愚蠢的洞要踏入。

您是否尝试过将 & 符号替换为 POST 的&