使用C#代码调用Web API

1. POST

POST的参数需要加上[FromBady],且参数只能一个

客户端提交数据的时候ContentType 为 application/x-www-form-urlencoded 或者 application/json 并没有什么影响。

如果数据是简单、平面的key-value键值对,那么使用application/x-www-form-urlencoded简单实用,不需要额外的编解码

如果数据是复杂的嵌套关系,有多层数据,那么使用application/json会简化数据的处理

C#客户端代码

  1 var postData = new
  2             {
  3                 day = day.ToString("yyyy-MM-dd")
  4             };
  5             var content = new StringContent(JsonHelper.ConvertToStr(postData));//用的StringContent 之前用的FormUrlEncodedContent
  6             content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
  7             HttpClient myHttpClient = new HttpClient();
  8             myHttpClient.BaseAddress = new Uri("http://localhost:54455");
  9             var response = myHttpClient.PostAsync("API/ProductionCalendar/Create", content).Result;
View Code

C#服务端代码

  1 [HttpPost]
  2 
  3 public bool Create([FromBody]JObject parameters)
  4 
  5 {
  6 
  7 dynamic d = parameters;
  8 
  9 DateTime dt;
 10 
 11 if (DateTime.TryParse(d.day.ToString(), out dt) == false)
 12 
 13 throw new Exception($"{d.day} 时间格式不正确!");
 14 
 15 return _calendarDomain.Create(dt);
 16 
 17 }
 18 
View Code

说明:使用JObject对应作为参数的类型,再使用动态类型dynamic 获取参数

clipboard

PS:如果接口的参数类型为值类型或者string,提交数据时

附:

扫描二维码关注公众号,回复: 8093861 查看本文章

https://www.cnblogs.com/landeanfen/p/5177176.html

猜你喜欢

转载自www.cnblogs.com/smallidea/p/11995852.html