C# 后端模式调用接口的几种方法

 public class HttpRequestDemo
    {

        /// <summary>
        /// 请求方式 post 提交 json格式
        /// 对应的服务端接口接收 Task<JsonResult> Login(model m)
        /// </summary>
        public void JsonFormatRequest()
        {
            //参数对象
            var data = new
            {
                platform = 1,
                userName = "xxxxxx",
                password = "xxxxxx"
            };
            //将对象参数序列化成json字符串 ,也可以自己手动拼接
            var jsonStr = Newtonsoft.Json.JsonConvert.SerializeObject(data);
            byte[] bs = Encoding.Default.GetBytes(jsonStr);


            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(@"http://xxx.com/Api/User/Login");//接口地址
            req.Method = "POST"; //请求类型
            req.ContentType = "application/json";
            req.ContentLength = bs.Length;

            //获得请求流
            using (Stream reqStream = req.GetRequestStream())
            {
                //参数写入请求流
                reqStream.Write(bs, 0, bs.Length);
                reqStream.Close();
                //从返回结果流中读取返回数据
                StreamReader sr = new StreamReader(req.GetResponse().GetResponseStream(), Encoding.UTF8);
                string result = sr.ReadToEnd();
                Console.WriteLine(result);//打印返回信息 结果可用Newtonsoft.Json.JsonConvert.DeserializeObject 序列化成自己想要的对象
            }

        }


        /// <summary>
        /// 请求方式 Post 提交 body 如 &name=123&xxx  方式传参
        /// 对应的服务端接收参数 Task<JsonResult> Login([FromForm]model m)
        /// </summary>
        public void QueryBodyRequest()
        {
            //拼接的即将传入的参数对象
            var queryStr = "&phone=xxxxx&key=xxxxxx&password=xxxx&type=2";
            byte[] bs = Encoding.Default.GetBytes(queryStr);


            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(@"http://xxx.com/account/login");//接口地址
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded"; 
            req.ContentLength = bs.Length;

            //请求数据
            using (Stream reqStream = req.GetRequestStream())
            {
                //写入流数据
                reqStream.Write(bs, 0, bs.Length);
                reqStream.Close();
                //从返回结果流中读取数据
                StreamReader sr = new StreamReader(req.GetResponse().GetResponseStream(), Encoding.UTF8);
                string result = sr.ReadToEnd();
                Console.WriteLine(result);//打印返回信息 结果可用Newtonsoft.Json.JsonConvert.DeserializeObject 序列化成自己想要的对象
            }
        }


        /// <summary>
        /// 请求方式 Post 提交 Body 方式2 效果同上方法 底层也是 &name=123&xxx 方式传参
        /// 对应的服务端接收参数 Task<JsonResult> Login([FromBody]model m)
        /// </summary>
        public void BodyFormatRequest()
        {
            try
            {
                HttpClient myHttpClient = new HttpClient();
                var url = "http://www.xxxxx.com/account/login";
                var content = new FormUrlEncodedContent(new Dictionary<string, string>() {
                      {"phone","18888888"},
                      {"key","CF6D9D9766665367700F9249AD080E9FF9D9" },
                      {"password","123123" },
                      {"type","2" },
                  });

                HttpResponseMessage response = myHttpClient.PostAsync(url, content).Result;
                var result = response.Content.ReadAsByteArrayAsync().Result;
                Console.WriteLine(Encoding.UTF8.GetString(result));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }

更多方式后续记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值