根据指定的编码格式返回请求的参数集合
在平时的应用中,经常需要通过post或者get方式接收来自于不同站点的url请求,而请求的编码格式又可能会有所不同,因此实现了如下的方法,用于解决用指定的编码从post或者get中提取用户请求的参数。
有关用户编码方式,可能受到用户请求方式的不同(如纯粹的url请求,或者在文档中的form请求),会导致相应的编码方式的不同,由于没有找到对编码识别的好的办法,目前本人采用的方式基本是要求用户传入一个encode的参数用于说明请求的编码方式是什么样子的,服务方接收后就按照这个编码来提取请求数据。
1
/// <summary>
2
/// 根据指定的编码格式返回请求的参数集合
3
/// </summary>
4
/// <param name="request">请求的字符串</param>
5
/// <param name="encode">编码模式</param>
6
/// <returns></returns>
7
public static NameValueCollection GetRequestParameters(HttpRequest request, Encoding encode)
8
{
9
NameValueCollection nv = null;
10
if (request.HttpMethod == "POST")
11
{
12
if (null != encode)
13
{
14
Stream resStream = request.InputStream;
15
byte[] filecontent = new byte[resStream.Length];
16
resStream.Read(filecontent, 0, filecontent.Length);
17
string postquery = Encoding.Default.GetString(filecontent);
18
nv = HttpUtility.ParseQueryString(postquery, encode);
19
}
20
else
21
nv = request.Form;
22
}
23
else
24
{
25
if (null != encode)
26
{
27
nv = System.Web.HttpUtility.ParseQueryString(request.Url.Query, encode);
28
}
29
else
30
{
31
nv = request.QueryString;
32
}
33
}
34
return nv;
35
}
36
37



浙公网安备 33010602011771号