热门IT资讯网

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);                }            }
0