c#中WebService的介绍及调用方式小结
作者:ThinkinLiu 发布时间:2021-05-29 00:10:17
前言
之前做移动端开发,都不清楚WebService是啥东东,现在接触c#,项目中有三处WebService调用,就不得不与其打交道了,最近碰上第三方接口地址更换,而自己项目因功能也需要增加WebService方法,所以了解了下WebService及其调用。
C-sharp in itlao5.com
一、概念
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。简单的理解就是:webservice就是放在服务器上的函数,所有人都可以调用,然后返回信息。 比如google就有一个web service ,你调用它就可以很容易的做一个搜索网站。 就像调用函数一样,传入若干参数(比如关键字、字符编码等),然后就能返回google检索的内容(返回一个字符串)。
WebService:我们可以理解为基于web的服务,它具有跨语言,跨平台的特性,通过web/http的方式实现远程调用,可以让程序的数据操作与功能模块分离。
WebService的几个基础概念:
XML:扩展性标记语言,用于传输格式化的数据,是Web服务的基础;
WSDL:Web服务描述语言,通过xml的形式描述服务的地址及调用方式;
SAOP:基于http+xml的简单对象访问协议,用于数据的网络传输。
SAOP主要有以下几个节点:
Envelope(必须) – 以XML的根元素出现;
Headers(可选) – 常添加一些身份验证数据;
Body(必须) – 包含要执行的服务器的方法和发送到服务器的数据。
示例:
<Envelope>
<Header>
</Header>
<Body>
<方法名>
参数
</方法名>
</Body>
</Envelope>
二、调用方式
WebService调用方式有多种,这里主要说两种:
方式1. 引用wsdl文件
即通过引用wsdl文件的方式直接生成WebService调用类,如下图:
vs+c#引用wsdl调用webService
这种方式适用于使用vs+c#开发的WebService。只需要如上图添加服务引用,根据后面提示输入url,一步步操作即可,调用时与本地方法的调用无异。
这种方式使用很简单,但缺点也不少,如:接口的每次更新都需要重新生成引用、如果接口使用其他语言开发则调用会出现问题。
方式2. 直接WebRequest请求
通过stringbuilder拼接好saop包内容,然后通过webRequest post方式发送,contentType使用"application/soap+xml; charset=utf-8";即可。
来源:https://www.jianshu.com/p/2d75f65be739


猜你喜欢
- 【一】背景6.0运行时申请权限已经是一个老生常谈的内容了,最近项目TargetSDKVersion升到23以上,所以我们也需要做权限管理,我
- 一、循环语句的几种语法语法:for循环格式:for(初始化语句;条件判断;递进语句){循环体;}while循环格式:初始化语句;while(
- 很多时候我们需要在Android设备上下载远程服务器上的图片进行显示,今天整理出两种比较好的方法来实现远程图片的下载。 方法一、直
- 什么是命名查询? Hibernate允许在映射文件中定义字符串形式的查询语句,这种查询方式成为命名查询 使用命名查询有什么好处? 由于使用H
- 效果:原图加水印后的图片废话不多说,直接上代码代码:package com.example.demo;import java.awt.Alp
- 1.获取屏幕宽高方法1:int screenWidth = getWindowManager().getDefaultDisplay().g
- 上篇文章已经对Synchronized关键字做了初步的介绍,从字节码层面介绍了Synchronized关键字,最终字节码层面就是monito
- spring boot是个好东西,可以不用容器直接在main方法中启动,而且无需配置文件,方便快速搭建环境。可是当我们要同时启动2个spri
- 目录相关依赖配置文件application.yml在Zookeeper中创建配置节点和数据测试类自定义Zookeeper配置在上一篇文章中介
- 首先我们先看一下要模拟的界面 我们主要实现的就是ListView解析json文件中的数据,UI布局很简单不做赘述。 这里我们需要一个服务器来
- 题目要求java实现字符串中的字母排序并输出排序后的结果分析1、创建一个字符串,赋值并将字符逐个存进数组中。String str = &qu
- 在整合SpringBoot和Mybatis-plus时,想写自定义的sql,所以创建了Mapper.xml文件,但是启动后却老是报错:org
- 如何使用 Jetpack Compose 创建翻转卡片效果介绍在电子商务和银行应用程序中输入卡信息是很常见的情况。我认为让用户更轻松地处理这
- Spark的算子的分类从大方向来说,Spark 算子大致可以分为以下两类:1)Transformation 变换/转换算子:这种变换并不触发
- 本文实例为大家分享了Unity3D网格功能生成球体网格模型的具体代码,供大家参考,具体内容如下前面已经讲过怎样使用mesh生成一个自己的网格
- 生成的Android应用APK文件最好进行优化,因为APK包的本质
- 具体实现过程不多说了,直接贴代码了。using System;using System.Collections.Generic;using
- 在使用多线程的时候有时候我们会使用 java.util.concurrent.Executors的线程池,当多个线程异步执行的时候,我们往往
- 一、Rxjava使用场景为了模拟实际场景,从wanandroid网站找了二个接口,如下:(对Wanandroid表示感谢!)public i
- 做Android开发五年了,期间做做停停(去做后台开发,服务器管理),当回来做Android的时候,发现很生疏,好