WebApi通过后端调用传递基础类型的参数
发表于:2024-11-26 作者:热门IT资讯网编辑
编辑最后更新 2024年11月26日,WebApi传递实体类型的参数,可以直接将实体序列化,然后写入请求流即可。传递基础类型的参数却不这么方便。以下是自己踩过的坑,分享出来给大家。调用的方式是通过后端,前端的没有总结。WebApi后端代码
WebApi传递实体类型的参数,可以直接将实体序列化,然后写入请求流即可。
传递基础类型的参数却不这么方便。以下是自己踩过的坑,分享出来给大家。调用的方式是通过后端,前端的没有总结。
WebApi后端代码:
public class UsersController : ApiController { private List _userList = new List() { new Users{ UserID=1, UserName="冯宝宝", UserEmail="[email protected]"}, new Users{ UserID=2, UserName="王也", UserEmail="[email protected]"} }; [HttpPost] public IEnumerable WithStringParam([FromBody]string name) { return _userList; } [HttpPost] public IEnumerable WithIntParam([FromBody]int id) { return _userList; } [HttpPost] public IEnumerable Post(Users user) { return _userList; } [HttpGet] public IEnumerable YieldGet() { foreach (var item in _userList) { yield return item; } } } public class Users { public int UserID { get; set; } public string UserName { get; set; } public string UserEmail { get; set; } }}
后端调用的代码:
{ //dynamic val = new { UserID = "1", UserName = "冯宝宝", UserEmail = "[email protected]" }; //HttpWebRequest httpWebRequest = HttpWebRequest.Create("http://localhost:51151/Api/Users/WithStringParam") as HttpWebRequest; HttpWebRequest httpWebRequest = HttpWebRequest.Create("http://localhost:51151/Api/Users/WithIntParam") as HttpWebRequest; httpWebRequest.Method = "POST"; httpWebRequest.ContentType = "application/json"; { //string strJson = JsonConvert.SerializeObject(val); //byte[] data = Encoding.UTF8.GetBytes(strJson); //dynamic strVal = new { name = "aaa" }; //string strJson = JsonConvert.SerializeObject(strVal); } //byte[] data = Encoding.UTF8.GetBytes($"\"冯宝宝\"");//string参数 byte[] data = Encoding.UTF8.GetBytes($"12");//int参数 Stream requestStream = httpWebRequest.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); try { using (var res = httpWebRequest.GetResponse() as HttpWebResponse) { if (res.StatusCode == HttpStatusCode.OK) { StreamReader streamReader = new StreamReader(res.GetResponseStream(), Encoding.UTF8); string result = streamReader.ReadToEnd(); } } } catch (Exception ex) { Console.WriteLine(ex); } }