栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c# Web Api 2 处理 后台提交的JSON 数据

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c# Web Api 2 处理 后台提交的JSON 数据

    关于写这篇手记,纯碎是记录自己做的,关于WebApi 2 怎么获取 由客户端提交的JSON数据。有不足或更好的写法的,请在写在评论中。如果能有对您有一点帮助,我就觉得很高兴了。
    因为不是基础教程,所以不会一步步写。如果您完全没API 的经验,那么可能会看不明白。
    客户端:
//GET请求
    /// 
  /// 后台发送GET请求
  /// 
  /// 服务器地址
  /// 发送的数据
  /// 
  public string HttpGet(string url, string data)
  {
      try
      {
          //创建Get请求
          url = url + (data == "" ? "" : "?") + data;
          HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
          request.Method = "GET";
          request.ContentType = "text/html;charset=UTF-8";
 
          //接受返回来的数据
          HttpWebResponse response = (HttpWebResponse)request.GetResponse();
          Stream stream = response.GetResponseStream();
          StreamReader streamReader = new StreamReader(stream, Encoding.GetEncoding("utf-8"));
          string retString = streamReader.ReadToEnd();
 
          streamReader.Close();
          stream.Close();
          response.Close();
 
          return retString;
      }
      catch (Exception)
      {
          return "";
      }
  }

//POST 请求
 public string HttpPost2(string url = "", int id = 0)
 {
     try
     {
  url = "http://localhost:3526/api/Product/GetProductByID2";
  string data = "{"id":3,"name":"李","ename":"Allex"}";

  //创建post请求
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  request.Method = "POST"; //POST请求
  //request.ContentType = "application/json;charset=UTF-8";
  request.ContentType = "text/json;charset=UTF-8";
  byte[] payload = Encoding.UTF8.GetBytes(data);
  request.ContentLength = payload.Length;

  //发送post的请求
  Stream writer = request.GetRequestStream();
  writer.Write(payload, 0, payload.Length);
  writer.Close();

  //接受返回来的数据
  HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  Stream stream = response.GetResponseStream();
  StreamReader reader = new StreamReader(stream, Encoding.UTF8);
  string value = reader.ReadToEnd();

  reader.Close();
  stream.Close();
  response.Close();

  return value;
     }
     catch (Exception ex)
     {
  string errorMsg = ex.Message;
  return "";
     }
 }
  WEB API2 :
  //如果使用GET 请求,那么会报错,没匹配到方法哦
  [HttpPost]
    public IHttpActionResult GetProductByID2()
    {
 byte[] byts = new byte[HttpContext.Current.Request.InputStream.Length];
 //byts = by;
 HttpContext.Current.Request.InputStream.Read(byts, 0, byts.Length);
 string req = System.Text.Encoding.UTF8.GetString(byts);

 //HttpContext.Current.Request.InputStream.Read(byts, 0, byts.Length);

 // string data = Request.get["data"].;

 int id = 1;
 var product = products.FirstOrDefault(m => m.ID == id);
 if (product == null)
 {
     return NotFound();
 }
 else
 {
     return Json(product);
 }
    }



结果:

这单纯是一个硬编码,API 中有一个接口,通过ID ,获取产品的信息,以JSON数据返回(客户端请求需要设置 request.ContentType = "text/json;charset=UTF-8";)

图片二:看到由客户端提交的JSON数据
1.如果提交的是整个要保存的实体,那么直接反序列化,再通过EF 保存即可
2.如果提交的数据很多,但只有部分需要保存,那么将JSON 转为 Dictionary后,再获取所需数据

暂时先写到这里,之后再修改

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/231993.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号