C# 使用InputStream接收 解析表单参数
最近对接微信支付,需要给微信提供一个回调接口。
支付完成后微信会访问这个回调接口传递参数,可根据参数来判断是否支付成功;
一般情况下我们写接口,接受参数都是Request[""] ,Request.Form[""],或者直接一个对象放在FormBody里面吧。
微信请求接口将参数sign了,所有我们可以使用数据流来读取传递的主体参数,
代码如下:
Stream s = Request.InputStream; int count = 0; byte[] buffer = new byte[1024]; StringBuilder builder = new StringBuilder(); while ((count = s.Read(buffer, 0, 1024)) > 0) { builder.Append(Encoding.UTF8.GetString(buffer, 0, count)); } s.Flush(); s.Close(); s.Dispose(); string queryData = HttpUtility.UrlDecode(builder.ToString());
或者
string queryData = string.Empty; using (StreamReader sr = new StreamReader(Request.InputStream)) { queryData = sr.ReadLine(); } queryData = HttpUtility.UrlDecode(queryData);
读取后,再对字符串进行解析,操作。