11111
web service就是为跨系统而来,你用浏览器(或插件)可以怎么打开你就可以怎么调用;如果是应用程序内,你怎么使用类你就怎么用。
你说的要是服务端的话,说明你没有写BLL层
mvc调用的webapi 跟 BLL层有啥关系
@嘎嘣脆boom: 因为都是后台逻辑,为啥不写在一起?
@刘宏玺: 那我想写个demo,没有BLL层不可以?
@嘎嘣脆boom: 理论上是可以的,直接new一个webapi的对象在mvc的控制器里面不行吗?
httpClient调啊,和普通服务端http请求没区别。
//在MVC project中加个common 泛型function,再到controller中发出请求动作
1 public virtual T Excute<T>(RestSharp.IRestRequest request) where T : new() 2 { 3 RestSharp.RestClient client = InitRestClient(); 4 var response = client.Execute<T>(request); 5 6 if (response == null) 7 { 8 throw new ErrorCodeException(2701500, "Can not access service"); 9 } 10 11 T responseData = response.Data; 12 13 if (response.StatusCode == System.Net.HttpStatusCode.InternalServerError) 14 { 15 //Deal with error. 16 } 17 return responseData; 18 } 19 20 private RestSharp.RestClient InitRestClient() 21 { 22 string BaseUrl = "The WebApi which you request."; 23 RestSharp.RestClient client = new RestSharp.RestClient(); 24 client.BaseUrl = new Uri(string.Format("{0}", BaseUrl)); 25 client.Timeout = 120000; 26 return client; 27 } 28 调用: 29 public List<GetUserInfoResponse> GetUserInfo() 30 { 31 RestSharp.IRestRequest request = new RestSharp.RestRequest("", RestSharp.Method.GET); 32 GetUserInfoResponse response = Excute<GetUserInfoResponse>(request); 33 34 if (response = null) 35 { 36 //Deal with error. 37 } 38 return response; 39 }
和普通的发http请求一样的,先封装一些get、post方法,然后统一调用。
参考:
http://blog.csdn.net/make1828/article/details/49869637
http://blog.csdn.net/smartsmile2012/article/details/51613596
我们项目中有用到这种情况,和c#去调用服务或者接口一样就好了。
这在一个项目中,这就相当与两个controller类嘛。你直接var api =new ApiController(); 这mvc里面不就可以用了。api.GetAction()
在MVC中用jQuery Ajax去调用Web API的数据接口