C# 如何调用WebService

前言

虽然webservice技术已经比较老了,但是还是有他应用的场景.

WebService介绍

  • webservice是基于http的soap协议传输数据 webservice=soap=http+xml,webservice协议就是有http+xml组成的,其中xml中会用到wsdl,wsdl是描述语言xml中的一种格式。
    几个基本概念:
  • SOAP:Simple Object AccessProtocol 简单对象访问协议。基于XML和HTTP
  • WSDL Web Services Description Language Web 服务描述语言。服务所提供的操作 如何访问服务 服务位于何处(通过 URL 来确定就 OK 了)

调用WebService的集中方式

1. Add reference

这个比较简单,基操,就不详述了

2. 生成调用cs文件

使用命令

wsdl /n:命名空间 /out: 路径\文件名称.cs webservice地址?wsdl

将生成好的文件包括到项目中

var WebService = new 类名Service();
WebService.方法名 就可以调用

3. 手写SOAP发送http请求

SOAP协议整体比较简单

一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:

  • 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
  • 可选的 Header 元素,包含头部信息
  • 必需的 Body元素,包含所有的调用和响应信息
  • 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

我们在实际汇总可以用Wizdler 插件或者SOAP UI 里面生成
本文以Wizdler 插件为例
以天气这个接口为例子:
地址为 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl在这里插入图片描述
会自动生成SOAP协议的XML
在这里插入图片描述
接下来可以拷到PostMan 中进行测试

在这里插入图片描述

--本例中用的是Restsharp,详解可以看另外一个博客
var client = new RestClient("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/soap+xml");
request.AddParameter("application/soap+xml", "<Envelope xmlns=\"http://www.w3.org/2003/05/soap-envelope\">\r\n    <Body>\r\n        <getSupportCity xmlns=\"http://WebXml.com.cn/\">\r\n            <byProvinceName>山东</byProvinceName>\r\n        </getSupportCity>\r\n    </Body>\r\n</Envelope>",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

持续更新中

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#调用WebService有三种方式:直接引用、引用wsdl和soap请求。如果开发者可以直接访问到webservice,可以使用直接引用的方式。在Visual Studio中,可以通过添加服务引用来直接引用webservice,系统会自动生成引用代码。然后可以实例化引用的webservice对象来使用。\[2\] 如果无法直接访问webservice,可以使用引用wsdl文件的方式。首先需要获取webservice的wsdl文件,可以通过浏览器打开webservice服务,然后查看服务说明,这就是整个wsdl的内容。将wsdl文件保存为文本文件,然后将后缀名改为wsdl。在Visual Studio中,同样可以通过添加服务引用来引用wsdl文件,将wsdl文件的路径输入到URL中即可。然后可以实例化引用的webservice对象来使用。\[3\] 最后一种方式是使用SOAP请求来调用webservice。这种方式适用于无法直接引用webservice或wsdl文件的情况。可以使用HttpPost请求来发送SOAP请求,并解析返回的SOAP响应。这种方式需要手动构建SOAP请求和解析SOAP响应,相对复杂一些。 总结起来,C#调用webservice可以通过直接引用、引用wsdl和soap请求三种方式来实现。具体选择哪种方式取决于开发者的需求和情况。 #### 引用[.reference_title] - *1* [【C#调用 webservice 的三种方法总结](https://blog.csdn.net/weixin_44231544/article/details/124922474)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C#调用WebService的三种方式](https://blog.csdn.net/m0_43398336/article/details/105082177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值