我正在尝试使用HttpUtility.ParseQueryString从后查询字符串中解析数组。它生成的结果字符串是x,x,4
。真实数组是hosts[] = "x", hosts[]="x,4"
。
所以它愚弄我的程序,认为它是一个数组元素。
帖子输入为:"hosts%5B%5D=x&hosts%5B%5D=x%2C4"
正如您所料,%2C
是逗号的编码,而&符号是数组元素的分隔符。令人惊讶的是,添加x&4
的元素并不会让世界崩溃。它已正确转义为&
private void PopulatePost()
{
if (_ctx.Request.HttpMethod != "POST" || _ctx.Request.ContentType == null)
return;
var post_string = new StreamReader(_ctx.Request.InputStream,
_ctx.Request.ContentEncoding).ReadToEnd();
if (_ctx.Request.ContentType.StartsWith("multipart/form-data"))
PopulatePostMultiPart(post_string);
else
Post = HttpUtility.ParseQueryString(post_string,
_ctx.Request.ContentEncoding);
}