0

我目前正在开发一个 C# WinForms 应用程序,该应用程序调用几个远程 Web 服务。在调查与包含 & 号的字符串相关的错误时,我遇到了以下方法,它为其他Web 服务“编码”POST 主体(诚然,它没有 & 号问题。)

object o = row.Values[i]; //some object
Type valueType = o.GetType();
if (valueType.Name.Equals("String", StringComparison.InvariantCultureIgnoreCase))
{
    o = o.ToString().Replace("&", "%26");
}

我对此做了一些 WTF,但后来想,是否有在 POST 正文上执行完整 URL 编码的实际原因?当然,唯一的两个风险点是和号和问号吗?

4

1 回答 1

1

这个问题有点片面。对 POST 数据进行编码的唯一原因是对方是否期望它被编码。例如,如果帖子数据的内容类型是“x-www-form-urlencoded”,那么,是的,您需要对数据进行 url 编码。如果对方希望它被 urlencoded 那么不要......

通常,您不需要对发送到 Web 服务的数据进行 urlencode,因为您拥有灵活的端点。如果您有一个期望直接从网页调用的 Web 服务(例如,通过表单发布),那么 urlencoding 可能由浏览器直接完成——在这种情况下,Web 服务需要接受 url 编码(因此任何其他想要与之通信的东西)。

于 2012-07-24T14:43:33.907 回答