首页 > 编程语言 >C# webservice接口调用实例

C# webservice接口调用实例

时间:2023-10-07 14:33:50浏览次数:42  
标签:类库 调用 webservice C# 接口 RPC 实例 SOAP

https://blog.csdn.net/qq_43544461/article/details/130768314

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>

推测默认配置只允许本地计算机访问,第一种配置除本地计算机以外都能访问,而第二种配置是将任何计算机访问都视为本地计算机访问。
————————————————
版权声明:本文为CSDN博主「荆棘(★ StatTrak™)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43544461/article/details/130768314

标签:类库,调用,webservice,C#,接口,RPC,实例,SOAP
From: https://www.cnblogs.com/Dongmy/p/17746230.html

相关文章

  • AtCoder Grand Contest 057 E RowCol/ColRow Sort
    洛谷传送门AtCoder传送门首先考虑一个经典的套路:转\(01\)。具体而言,我们考虑若值域是\([0,1]\)怎么做。发现可以很容易地判定一个\(A\)是否合法。设矩阵第\(i\)行的和为\(r_i\),第\(j\)列的和为\(c_j\),那么合法当且仅当\(A\)的\(\{r_i\}\)和\(\{c_j\}\)(可重集......
  • 【Cpp】RTTI 机制原理解析
    ReferencesBaiduWikiC++中的RTTI机制详解RTTI推荐阅读:RTTI原理推荐阅读:C++中的RTTI机制什么是RTTI机制?RTTI是“RuntimeTypeInformation”的缩写,意思是:运行时类型信息。它提供了运行时确定对象类型的方法。RTTI通过运行时类型信息程序能够使用基类的指针或引用......
  • java实现 微信公众号推送消息 ,cv 就可运行!!!
    一,注册公众号1,官网地址:申请测试公众号地址:微信公众平台(qq.com)文档地址:微信开放文档(qq.com)2,注册后可以查看自己的appId和appsecret3,创建模板请注意:1、测试模板的模板ID仅用于测试,不能用来给正式帐号发送模板消息2、为方便测试,测试模板可任意指定内容,但实际上正......
  • docker 安装 neo4j
    1.安装所需的软件包yuminstall-yyum-utilsdevice-mapper-persistent-datalvm22.设置阿里云仓库(国内仓库稳定)yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.查看docker容器版本yumlistdocker-ce--showduplicate......
  • 实验1 C语言输入输出和简单程序编写
    实验1C语言输入输出和简单程序编写一、实验目的1.会使用C语言程序开发环境(vs2010/devc++等),能熟练、正确使用它们编写、编译、运行、调试C程序2.知道C程序结构和编码规范,能正确使用3.能正确、熟练使用C语言输入输出函数:scanf(),printf(),getchar(),putchar()4.能灵活......
  • 自动化爬取Behance网站上的项目链接(优化版)
    ###代码功能:此代码的主要目的是自动化爬取Behance网站上的项目链接。1.**多关键词搜索**:用户可以一次性输入多个关键词,程序会为每个关键词爬取指定数量的项目链接。2.**自动滚动页面**:使用Selenium模拟浏览器操作,程序能自动地滚动页面以获取更多的链接。3.**命令行界面......
  • std::vector::sort
    std::sort(vector.begin(),vector.end(),[](inta,intb){if(a==1)returnfalse;//a为1就将这个1排在最后,因为返回的是falseif(b==1)returntrue;//还是将1排在最后returna>b;//降序排序,默认为升序排序})sort(起始迭代器,终止迭代器,排序规则);......
  • javascript比较字符串大小
    https://blog.csdn.net/first_shun/article/details/108186675使用js进行sort排序的时候比较字符串用了使用localeCompare方法a.localeCompare(b)//-101......
  • rsync 远程同步
    一、rsync远程同步简介rsync(RemoteSync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。在远程同步任务中,负责发起rsync同步操作的客户机......
  • 删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
    [16:36:16root@centos8~]#cat-A/etc/fstab$#$#/etc/fstab$#CreatedbyanacondaonMonJul1912:39:262021$#$#Accessiblefilesystems,byreference,aremaintainedunder'/dev/disk/'.$#Seemanpagesfstab(5),findfs(8),mount(8)and/orblkid(......