httplistener parsequerystring;带逗号的数组元素

时间:2012-05-24 20:53:24

标签: c#

我正在尝试使用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);
}

0 个答案:

没有答案