webapi创建及访问
程序员文章站
2022-07-01 20:39:26
一、webapi创建 1、创建项目 我使用的是VS2015,点开新建项目,安装如下操作执行: . 2、设置路由 config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id} ......
一、webapi创建
1、创建项目
我使用的是vs2015,点开新建项目,安装如下操作执行:
.
2、设置路由
config.routes.maphttproute( name: "defaultapi", routetemplate: "api/{controller}/{action}/{id}", defaults: new { id = routeparameter.optional } );
3、设置控制器
在controllers 文件夹下创建一个示例控制器: apicontroller
至此webapi创建完成。
二、webapi访问
这里主要说明get和post访问方法。浏览器默认使用get请求方式,如果要使用post请求,需要下载插件,如火狐的restclient,ctrl+shift+a可进入下载。
[httpget]:表示使用get访问;(同时get方式访问可以给函数命名为get***)
[httppost]:表示使用post访问;
[acceptverbs("get", "post")]:post和get方法都支持;
1、get请求
[httpget] public httpresponsemessage getsendrequest(string mo) { string rstr = ""; httpwebrequest webrequest = (httpwebrequest)webrequest.create(url); webrequest.method = "get"; httpwebresponse webresponse; try { //如果没有try...catch语句访问页面出现错误时本句会显示错误,使程序无法运行 webresponse = (httpwebresponse)webrequest.getresponse(); //请求页面信息 } catch (webexception ex) { webresponse = (httpwebresponse)ex.response; //获得错误发生时候服务器段错误页面的源代码 } streamreader sr = new streamreader(webresponse.getresponsestream(), system.text.encoding.getencoding("utf-8")); //getresponsestream()方法获取http响应的数据流,并尝试取得url中所指定的网页内容 //streamreader类的read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:utf8) rstr = sr.readtoend(); sr.close(); webresponse.close(); //httpresponsemessage result = new httpresponsemessage { content = new stringcontent(rstr, system.text.encoding.getencoding("utf-8"), "application/json") }; //避免页面出现<string></string>,只返回json字段 //return result; return rstr; }
访问网址:http://localhost:58601/api/api/getsendrequest?mo=001000012111
(http://localhost:58601/api/控制器名/方法名)
2、post请求
[httppost] public string sendrequest(string param) { httpwebrequest req = (httpwebrequest)httpwebrequest.create(url); encoding encoding = encoding.utf8; byte[] bs = encoding.ascii.getbytes(param); string responsedata = string.empty; req.method = "post"; //application/x-www-form-urlencoded默认是a=1&b=2&c=3类型 //application/json默认参数是a:1&b:2&c:3类 req.contenttype = "application/x-www-form-urlencoded"; req.contentlength = bs.length; using (stream reqstream = req.getrequeststream()) { reqstream.write(bs, 0, bs.length); reqstream.close(); } using (httpwebresponse response = (httpwebresponse)req.getresponse()) { using (streamreader reader = new streamreader(response.getresponsestream(), encoding)) { responsedata = reader.readtoend().tostring(); } } // httpresponsemessage result = new httpresponsemessage { content = new stringcontent(responsedata, system.text.encoding.getencoding("utf-8"), "application/json") }; return responsedata; }
访问网址:http://localhost:58601/api/api/sendrequest?param=0&moid=1&partno=2&stationid=t
(http://localhost:58601/api/控制器名/方法名)
上一篇: 对tcp/ip协议新认识(四)
下一篇: 【计算机网络】计算机网络面试题系列二
推荐阅读