引用 POST 内容导致错误请求
Quote in POST content causing bad requests
我正在通过用 C# 编写的 Windows 服务向 API 发出 POST 请求,内容各不相同。有时,用户会使用 " 来表示英寸。此数据必须传递给 API,但是当它自动完成时,按照我的设置方式,这会导致它结束描述字符串POST 内容过早,导致错误请求。
例如,我可能有一个如下所示的“描述”字段:
“已更换 4”管
有没有办法在不退出字符串的情况下在字符串中间传递“?是不是像下面这样,或者我应该把”字符替换为“inch”这个词?我更愿意发送实际的双引号,因为我不确定他们是否会 always 表示它是指英寸。 即他们可能实际上是在引用某人的话。
if (description.Contains("\""))
{
description.Replace("\"", "inch");
}
答案来自@TomW...
"@jpb103 不要那样做。连接字符串不遵守 JSON 的正确转义规则。改为使用 JObject 构造主体,这将在对象序列化时遵守字符转义“
JObject json = new JObject
{
{ "account", account },
{ "description", description },
{ "abbreviation", abbreviation }
};
其中帐户、描述和缩写都是动态填充的。此方法正确地遵循 JSON 的字符转义规则并防止我看到的 POST 错误。谢谢汤姆!
我正在通过用 C# 编写的 Windows 服务向 API 发出 POST 请求,内容各不相同。有时,用户会使用 " 来表示英寸。此数据必须传递给 API,但是当它自动完成时,按照我的设置方式,这会导致它结束描述字符串POST 内容过早,导致错误请求。
例如,我可能有一个如下所示的“描述”字段:
“已更换 4”管
有没有办法在不退出字符串的情况下在字符串中间传递“?是不是像下面这样,或者我应该把”字符替换为“inch”这个词?我更愿意发送实际的双引号,因为我不确定他们是否会 always 表示它是指英寸。 即他们可能实际上是在引用某人的话。
if (description.Contains("\""))
{
description.Replace("\"", "inch");
}
答案来自@TomW...
"@jpb103 不要那样做。连接字符串不遵守 JSON 的正确转义规则。改为使用 JObject 构造主体,这将在对象序列化时遵守字符转义“
JObject json = new JObject
{
{ "account", account },
{ "description", description },
{ "abbreviation", abbreviation }
};
其中帐户、描述和缩写都是动态填充的。此方法正确地遵循 JSON 的字符转义规则并防止我看到的 POST 错误。谢谢汤姆!