HttpWebRequest的Request.Form接收不到数据

最近在写接口。
post请求,使用postman模拟时,使用的是raw-json ,然后发现

HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context     
HttpRequestBase request = context.Request;//定义传统request对象
string dbcode = request.Form["dbcode"];

dbcode获取不到参数。

发现HttpWebRequest只有设置为application/x-www-form-urlencoded时候,接收端才能通过Request.Form[“key”]来获取值,Js得ajax一样也需要设置contentType: “application/x-www-form-urlencoded;charset=utf-8”

当ContentType设置为application/json时,Request.Form是取不到任何值得。Keys的长度为0;

正确获取方式:

      var stream = Request.InputStream;
       stream.Position = 0; //如果使用mvc,必须设置,否则流position一直在最后,个人理解为mvc内部已经对Request.InputStream进行了读取导致position移到了最后。
       StreamReader streamReader = new StreamReader(stream);
       string body=streamReader.ReadToEnd();

或者

       var stream = Request.InputStream;
       stream.Position = 0;
       byte[] byts = new byte[stream.Length];
       stream.Read(byts, 0, byts.Length);
       string body = System.Text.Encoding.UTF8.GetString(byts);

得到的body就是json格式字符串,如:
{“httpUrl”:“http://www.pageadmin.net/e/images/logo.jpg”,“saveFilePath”:"/app_data/test/logo.jpg"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值