web service
一、 Web service介绍:
1. Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML
2. Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。
3. 同时,web service可以支持SOA编程,就是指在业务层的基础上添加一个服务层,服务层主要提供应用层需要的数据,就是通过web service的技术提供数据。
二、新建web service服务
三、新建一个webform应用程序app,去调用上面的服务
1. 添加服务引用,点击发现,如下:因为是本地的,所以点击发现,如果调用远程的,就需要输入ip地址和端口号。
2. 如果服务端添加新方法,那么就需要执行以下操作,就能看到最新的方法
3. web service返回list类型的数据,需要将数据进行json序列化才可以,不然会报异常。具体代码如下:
/// <summary> /// WebService1 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 // [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] public int Add(int a, int b) { return a + b; } [WebMethod] public string LoadUserInfoList() { IBLL.IUserInfoService UserInfoService = new BLL.UserInfoService(); List<Model.UserInfo>list= UserInfoService.LoadEntities(u=>true).ToList(); return Common.SerializeHelper.SerializeToString(list); //SOA:面向服务。 } }
4. 调用服务层的web service
ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient(); // int sum= client.Add(3, 6);
//直接根据上方对象调用其中的方法 Response.Write(client.LoadUserInfoList());
5. 调用外部的web service
调用天气预报的webservice示例:
a. 请求地址:http://www.webxml.com.cn/webservices/weatherwebservice.asmx
b. 右击添加服务引用
c. 容易出的一个错误,检查以后发现,其中有两个下面的配置文件,因为重复了,所以报错,取掉其中一个就好了
d. 前端界面中放置一个GridView,然后调用数据,绑定在界面中。
//先new出一个对象 ServiceReference2.WeatherWSSoapClient client = new ServiceReference2.WeatherWSSoapClient(); //调用其中的一个方法,因为返回的类型是dateset类型的数据 DataSet ds=client.getRegionDataset(); //将第tables0的数据绑定在数据中 this.GridView1.DataSource = ds.Tables[0]; this.GridView1.DataBind();
e. 最终显示结果如下: