WebService基础
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。
因为网上已经有很多博客都讲了WebService相关的概念,所以这里就不再赘述,仅对WebService的几个特点进行下归纳。
跨语言通信
因为WebService采用的是XML来进行数据的传输,所以能够创建独立于语言、分布式可集成的服务平台。
高可用接口
WebService不需要安装组件,只需直接调用远端WebService即可,甚至可以将多个WebService的功能集中起来再通过自己的方式暴露出去,能够非常友好的为用户提供服务接口。
WebService开发
这里我们再.net平台为例,因为.net平台不需要其它工具或者SDK就可以进行WebService的开发。我采用的VS版本是Microsoft Visual Studio 2019。
创建项目
首先我们创建一个一个ASP.NET Web 应用程序(.NET FrameWork)项目,模板可选择”空”。
添加Web服务
给新生成的解决方案添加一个“Web服务(ASMX)”文件,名称为UserService,如下图所示
添加了Web服务的解决方案及Web服务文件如下:
添加接口
如上图的默认接口HellowWorld,需要在接口方法的上面添加 [WebMethod],也可以 [WebMethod(Description="*****")],将该接口的描述添加到““中。
此处我们以获取用户信息的接口为例。
public class User { public string UserName { get; set; } public string Age { get; set; } } [WebMethod(Description ="提交姓名及年龄来获取一个用户实体")] public User GetUser(string name, string age) { return new User { UserName = name, Age = age }; }
发布服务
此处给大家介绍两种发布方式,第一种最简单,直接F5运行,即可得到如下界面
即为发布成功,但是如果停止运行,该服务就相当于不存在了。
这里重点讲述的是第二种方法,部署到IIS。
首先启动Internet Information Service(IIS)管理器。新建一个网站,如下
如果遇到问题可参考下面这篇博客:
https://www.cnblogs.com/qq260250932/p/4383051.html
部署成功后,同浏览器浏览http://192.168.209.117/UserService.asmx即可得到与VS直接运行一样的页面。
WebService接口调用
Javascript调用webservice
注:网上很多种方法,经过验证仅下面一种方法有效
首先我们得新建一个网页,代码如下:
<!DOCTYPE html> <html> <head> <title>测试实例</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script> function myFunction() {} /**/</script> </head> <body> <button onclick="myFunction()">点我</button> </body> </html>
我们还需要给myFunction添加实现,实现如下:
function myFunction() { var URL = "http://192.168.209.117/UserService.asmx/GetUser"; var Params = "name=leftfist&age=28";//传给WebService的参数 var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.Open("POST",URL, false);//用POST方法,此处可改为GET方法 xmlhttp.SetRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlhttp.SetRequestHeader ("Content-Length",Params.length); xmlhttp.send(Params); var result = xmlhttp.status; //OK if (result == 200) { document.write(xmlhttp.responseText); } xmlhttp = null; }
特别注意,xmlhttp.SetRequestHeader("Content-Type","application/x-www-form-urlencoded"),经过验证设置其他值均会报错。
点击按钮,即可获取到以下结果
.net调用webservice
首先在.net项目中添加服务引用
添加服务引用后双击服务引用,即可看到添加该服务引入的类
最下面的UserServiceSoapClient即为我们需要调用的接口类。
比如示例代码如下
var service = new UserServiceSoapClient(); var user = service.GetUser("chenchaochao", "28"); if (user != null) Console.WriteLine(user.UserName + " " + user.Age);
运行后控制台会输出 chenchaochao 28,如下图
至此,通过Javascript和C#对WebService的调用就讲解结束了。