博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebApi通过后端调用传递基础类型的参数
阅读量:6280 次
发布时间:2019-06-22

本文共 2851 字,大约阅读时间需要 9 分钟。

WebApi传递实体类型的参数,可以直接将实体序列化,然后写入请求流即可。

传递基础类型的参数却不这么方便。以下是自己踩过的坑,分享出来给大家。调用的方式是通过后端,前端的没有总结。
WebApi后端代码:

public class UsersController : ApiController    {        private List
_userList = new List
() { new Users{ UserID=1, UserName="冯宝宝", UserEmail="fbaobao@yydy.com"}, new Users{ UserID=2, UserName="王也", UserEmail="wangye@yydy.com"} }; [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 = "fengbaobao@yydy.com" };                //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);                }            }

转载于:https://blog.51cto.com/3544640/2149320

你可能感兴趣的文章
HDU 2159
查看>>
spring batch中用到的表
查看>>
资源文件夹res/raw和assets的使用
查看>>
UINode扩展
查看>>
LINUX常用命令
查看>>
百度云盘demo
查看>>
概率论与数理统计习题
查看>>
初学structs2,简单配置
查看>>
Laravel5.0学习--01 入门
查看>>
时间戳解读
查看>>
sbin/hadoop-daemon.sh: line 165: /tmp/hadoop-hxsyl-journalnode.pid: Permission denied
查看>>
@RequestMapping 用法详解之地址映射
查看>>
254页PPT!这是一份写给NLP研究者的编程指南
查看>>
《Data Warehouse in Action》
查看>>
String 源码浅析(一)
查看>>
Spring Boot 最佳实践(三)模板引擎FreeMarker集成
查看>>
Fescar 发布 0.2.3 版本,支持 Redis 和 Apollo
查看>>
Google MapReduce到底解决什么问题?
查看>>
CCNP-6 OSPF试验2(BSCI)
查看>>
Excel 2013 全新的图表体验
查看>>