我目前正在开发一个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编码的实际原因?当然只有两个风险点是&符号和问号?
答案 0 :(得分:1)
这个问题有点片面。对POST数据进行编码的唯一原因是,如果另一方希望对其进行编码。例如如果帖子数据的内容类型是“x-www-form-urlencoded”那么,是的,你需要对数据进行url编码。如果另一方不期望它是urlencoded,那么不要......
通常,您不需要将数据urlencode到Web服务,因为您有灵活的端点。如果您有一个期望直接从网页调用的Web服务(例如通过表单发布),那么urlencoding可以由浏览器直接完成 - 在这种情况下,Web服务需要接受url编码(因此任何希望与之沟通的 else 。)