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的调用就讲解结束了。

 

 

 

 

 

 

  

posted on 2019-06-30 16:21  舞狼  阅读(214)  评论(0编辑  收藏  举报