我只需要阅读以下回复正文中的mode
段。
grant_type =密码&安培;用户名= demouser&安培;密码= test123&安培; CLIENT_ID = 500DWCSFS-D3C0-4135-A188-17894BABBCCF&安培;模式=设备
我使用下面的函数来读取HTTP正文,它给了我整个身体。如何在不使用子字符串或更改seek()中的值的情况下删除mode
段:bodyStream.BaseStream.Seek(3, SeekOrigin.Begin);
var bodyStream = new StreamReader(HttpContext.Current.Request.InputStream);
bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
var bodyText = bodyStream.ReadToEnd();
答案 0 :(得分:2)
你做不到。 HTTP使用TCP,它要求你无论如何都要读取整个主体,你不能“寻找”成TCP流。嗯,你可以,但仍然读取整个身体并丢弃未使用的碎片。
所以你有来读取整个流,你有来有意义地解析它,因为另一个参数也可以包含字符串“mode”,它也可以在开始时,您也无法搜索&mode
。
鉴于这是一个表单帖子,您只需访问Request.Form["mode"]
即可。如果您确实想自己解析它:
string formData;
using (reader = new StreamReader(HttpContext.Current.Request.InputStream))
{
formData = reader.ReadToEnd();
}
var queryString = HttpUtility.ParseQueryString(formData);
var mode = queryString["mode"];