C# webservice接口调用实例


书接上上回 C# WebService&WebApi接口项目创建,以及上回 C# webapi接口调用实例,在demo的基础上进行webservice接口调用实例开发。

源码

WebService接口项目public分支https://gitee.com/xiuhuang/webservice_demo
进行接口调用的类库项目public分支https://gitee.com/xiuhuang/dll_demo
由于仅仅作为接口调用测试,因此使用之前生成的demo就足够了,不再修改。

SOAP协议

SOAP(Simple Object Accrss Protocol,简单对象访问协议)是一种简单的基于XML的协议,可以使应用程序在分散或分布式的环境中通过HTTP来交换信息。SOAP是Web Service的通信协议,SOAP提供了标准的RPC方法来调用Web Service以请求/响应模式运行。

RPC(Remote Procedure Call)是一种远程过程调用方法,其将函数调用封装成网络消息发送给服务端,服务端响应消息后返回计算结果给客户端。类似于本地函数调用,但是在网络环境下RPC更适合执行异地调用,实现分布式系统的高效通信。缺点是接口的修改会影响到客户端和服务端的共同协作,需要进行版本控制,即接口修改后要同步更新引用。

因此,仅从调用接口一方的角度来看,webservice会比webapi在发送请求和接收数据上更简单一些。webservice接口调用更像是引入了一个依赖,直接使用其中的类和方法即可(即RPC方法的原理);而webapi接口调用则像是搭建了个postman,需要自己组建发送http请求的内容,再将返回的数据映射到实体类。

dll类库部分

1.添加服务引用。
在这里插入图片描述
2.将WebService接口地址https://localhost:44325/WebService1.asmx填入此处,或者填入wsdl文件的所在路径。
注意:在可以访问WebService接口地址时使用地址即可,在不可访问接口地址时(如内网部署),则使用wsdl文件。
在这里插入图片描述

在这里插入图片描述
3.在之前的测试类Class1中写测试方法show4。
前面提到SOAP协议基于RPC方法,类似于本地函数调用。而想要调用定义好的函数,首先需要将函数所在的类实例化为对象,因此需要先实例化一个SoapClient对象。即:
ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient();
在这里插入图片描述

4.将生成的dll类库项目引入其他项目,输出的结果如下图所示。(此处我生成了一个winform应用程序作为测试,直接写到main函数里,和上一篇是同一个)
在这里插入图片描述

在这里插入图片描述
5.注意:如果选择和我一样的方法通过dll类库项目调用接口,则需要在引用该类库的应用程序项目中修改App.config,因为类库项目不能读自己的config文件,而是读调用该类库的应用程序的config文件。
在这里插入图片描述

番外篇

使用实体类生成指定格式数据

webservice接口项目部分

1.添加一个实体类Result。
在这里插入图片描述2.在WebService1.asmx.cs文件里添加一个实体类测试的方法GetValue。
在这里插入图片描述3.启动后,在网页上输入ID和Name,即可得到XML格式的响应数据。
在这里插入图片描述
在这里插入图片描述

dll类库部分

1.更新服务引用。
在这里插入图片描述
2.在测试类Class1中增加测试方法show5。
在这里插入图片描述3.还是和之前一样,放到winform应用程序的main函数中执行测试,输出结果如下图所示。
在这里插入图片描述

在这里插入图片描述

WebService网页在非本地计算机上没有测试按钮

1.打开已发布的 WebService 的 Web.config 文件。
2.在<system.web>配置节点中,增加如下配置:

    <webServices>
      <protocols>
          <remove name="HttpGet" />
          <remove name="HttpPost" />
          <remove name="HttpPostLocalhost" />
      </protocols>  
    </webServices>

3.上述的配置是微软官方文档给出的配置方法,但若要从本地计算机测试 HTTP-GET、HTTP-POST 或 HTTP-POST,需要删除上面增加的配置。
因此可以采用增加另一种配置:

    <webServices>
      <protocols>
          <add name="HttpGet" />
          <add name="HttpPost" />
          <add name="HttpPostLocalhost" />
      </protocols>  
    </webServices>

推测默认配置只允许本地计算机访问,第一种配置除本地计算机以外都能访问,而第二种配置是将任何计算机访问都视为本地计算机访问。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值