WebService SOAP1.1 SOAP1.12 HTTP PSOT方式调用

Visual Studio 2022 新建WebService项目

创建之后启动运行

设置默认文档即可

经过上面的创建WebService已经创建完成,添加HelloWorld3方法,

[WebMethod]
public string HelloWorld3(int a, string b)
{
//var s = a + b;
return $"Hello World a+b={a + b}";
}

属性页面如下:

 地址加上?wsdl----http://localhost:8012/WebService1.asmx?wsdl 可以查看具体方法,我们点开一个方法,查看具体调用方式,

http://localhost:8012/WebService1.asmx?op=HelloWorld3

下面使用 SOAP1.1 SOAP1.12 HTTP PSOT方式调用WebService,代码如下

  #region 测试 SOAP1.1 SOAP1.12 HTTP PSOT方式调用WebService 调用/// <summary>/// WebService SOAP1.1方法调用/// </summary>/// <param name="xmldata">调用方法所需参数</param>        public static string WebServiceSOAP11(int a, string b){//http://localhost:8012/WebService1.asmx/HelloWorld3#region HTTP POST 请求和响应示例#region HTTP POST 请求和响应示例。所显示的占位符需替换为实际值//SOAP 1.1//以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。//请求//POST /WebService1.asmx HTTP/1.1//Host: localhost//Content-Type: text/xml; charset=utf-8//Content-Length: length替换//SOAPAction: "http://tempuri.org/HelloWorld3"//<?xml version="1.0" encoding="utf-8"?>//<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">//  <soap:Body>//    <HelloWorld3 xmlns="http://tempuri.org/">//      <a>int替换</a>//      <b>string替换</b>//    </HelloWorld3>//  </soap:Body>//</soap:Envelope>//响应//HTTP/1.1 200 OK//Content-Type: text/xml; charset=utf-8//Content-Length: length//<?xml version="1.0" encoding="utf-8"?>//<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">//  <soap:Body>//    <HelloWorld3Response xmlns="http://tempuri.org/">//      <HelloWorld3Result>string</HelloWorld3Result>//    </HelloWorld3Response>//  </soap:Body>//</soap:Envelope>#endregionHttpWebRequest httpWebRequest = null;string result = null;var webserviceurl = "http://localhost:8012/WebService1.asmx" ?? ConfigurationManager.AppSettings.Get("WebServiceUrl");httpWebRequest = (HttpWebRequest)WebRequest.Create(webserviceurl);//注意SOAP1.1 ContentType,需要SOAPAction,Content-Type: text/xml; charset=utf-8httpWebRequest.ContentType = "text/xml; charset=utf-8";httpWebRequest.Method = "post";httpWebRequest.Headers.Add("SOAPAction", "http://tempuri.org/HelloWorld3");Stream requestStream = httpWebRequest.GetRequestStream();StreamWriter streamWriter = new StreamWriter(requestStream);streamWriter.Write($"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n<soap:Body>\r\n<HelloWorld3 xmlns=\"http://tempuri.org/\">\r\n<a>{a}</a>\r\n<b>{b}</b>\r\n</HelloWorld3>\r\n</soap:Body>\r\n</soap:Envelope>");streamWriter.Close();requestStream.Close();//byte[] vs = Encoding.UTF8.GetBytes("a=66&b=1233");//requestStream.Write(vs, 0, vs.Length);httpWebRequest.ContentLength = vs.Length;//requestStream.Close();Stream responseStream = null;StreamReader reader = null;HttpWebResponse webResponse = (HttpWebResponse)httpWebRequest.GetResponse();try{if (webResponse.StatusCode == HttpStatusCode.OK){//返回值类型  Content-Type: text/xml; charset=utf-8//StreamReader reader = new StreamReader(webResponse.GetResponseStream());responseStream = webResponse.GetResponseStream();reader = new StreamReader(responseStream);result = reader.ReadToEnd();XmlDocument xmlDocument = new XmlDocument();xmlDocument.LoadXml(result);result = xmlDocument.InnerText;}}catch (Exception ex){result = $"查询出错,原因:{ex}";}finally{reader.Close();webResponse.Close();responseStream.Close();httpWebRequest.Abort();}return result;//if (!string.IsNullOrEmpty(result))//{//    System.Xml.Serialization.XmlSerializer xmlSerializer= new System.Xml.Serialization.XmlSerializer()//}#endregion}/// <summary>/// WebService SOAP1.2方法调用/// </summary>/// <param name="xmldata">调用方法所需参数</param>        public static string WebServiceSOAP12(int a, string b){//http://localhost:8012/WebService1.asmx/HelloWorld3#region HTTP POST 请求和响应示例#region HTTP POST 请求和响应示例。所显示的占位符需替换为实际值//SOAP 1.2//以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。//POST /WebService1.asmx HTTP/1.1//Host: localhost//Content-Type: application/soap+xml; charset=utf-8//Content-Length: length//<?xml version="1.0" encoding="utf-8"?>//<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">//  <soap12:Body>//    <HelloWorld3 xmlns="http://tempuri.org/">//      <a>int</a>//      <b>string</b>//    </HelloWorld3>//  </soap12:Body>//</soap12:Envelope>//HTTP/1.1 200 OK//Content-Type: application/soap+xml; charset=utf-8//Content-Length: length//<?xml version="1.0" encoding="utf-8"?>//<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">//  <soap12:Body>//    <HelloWorld3Response xmlns="http://tempuri.org/">//      <HelloWorld3Result>string</HelloWorld3Result>//    </HelloWorld3Response>//  </soap12:Body>//</soap12:Envelope>#endregionHttpWebRequest httpWebRequest = null;string result = null;var webserviceurl = "http://localhost:8012/WebService1.asmx" ?? ConfigurationManager.AppSettings.Get("WebServiceUrl");httpWebRequest = (HttpWebRequest)WebRequest.Create(webserviceurl);//注意与SOAP1.1 区分 ContentType,不需要SOAPAction,Content-Type: application/soap+xml; charset=utf-8httpWebRequest.ContentType = "application/soap+xml; charset=utf-8";httpWebRequest.Method = "post";//不需要了 httpWebRequest.Headers.Add("SOAPAction", "http://tempuri.org/HelloWorld3");Stream requestStream = httpWebRequest.GetRequestStream();StreamWriter streamWriter = new StreamWriter(requestStream);streamWriter.Write($"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">\r\n<soap12:Body>\r\n<HelloWorld3 xmlns=\"http://tempuri.org/\">\r\n<a>{a}</a>\r\n<b>{b}</b>\r\n</HelloWorld3>\r\n</soap12:Body>\r\n</soap12:Envelope>");streamWriter.Close();requestStream.Close();//byte[] vs = Encoding.UTF8.GetBytes("a=66&b=1233");//requestStream.Write(vs, 0, vs.Length);httpWebRequest.ContentLength = vs.Length;//requestStream.Close();Stream responseStream = null;StreamReader reader = null;HttpWebResponse webResponse = (HttpWebResponse)httpWebRequest.GetResponse();try{if (webResponse.StatusCode == HttpStatusCode.OK){//返回值类型 Content-Type: application/soap+xml; charset=utf-8//StreamReader reader = new StreamReader(webResponse.GetResponseStream());responseStream = webResponse.GetResponseStream();reader = new StreamReader(responseStream);result = reader.ReadToEnd();XmlDocument xmlDocument = new XmlDocument();xmlDocument.LoadXml(result);result = xmlDocument.InnerText;}}catch (Exception ex){result = $"查询出错,原因:{ex}";}finally{reader.Close();webResponse.Close();responseStream.Close();httpWebRequest.Abort();}return result;//if (!string.IsNullOrEmpty(result))//{//    System.Xml.Serialization.XmlSerializer xmlSerializer= new System.Xml.Serialization.XmlSerializer()//}#endregion}/// <summary>/// WebService HTTP方法调用/// </summary>/// <param name="xmldata">调用方法所需参数</param>        public static string WebServiceHTTP(string xmldata){//http://localhost:8012/WebService1.asmx/HelloWorld3#region HTTP POST 请求和响应示例#region HTTP POST 请求和响应示例。所显示的占位符需替换为实际值//以下是 HTTP POST 请求和响应示例。所显示的占位符需替换为实际值。// POST /WebService1.asmx/HelloWorld3 HTTP/1.1// Host: localhost// Content-Type: application/x-www-form-urlencoded// Content-Length: length替换// a=string替换&b=string替换// HTTP/1.1 200 OK// Content-Type: text/xml; charset=utf-8// Content-Length: length// <?xml version="1.0" encoding="utf-8"?>// <string xmlns="http://tempuri.org/">string</string> #endregionHttpWebRequest httpWebRequest = null;string result = null;var webserviceurl = "http://localhost:8012/WebService1.asmx/HelloWorld3" ?? ConfigurationManager.AppSettings.Get("WebServiceUrl");httpWebRequest = (HttpWebRequest)WebRequest.Create(webserviceurl);//注意与SOAP1.1,SOAP1.2 区分 ContentType,不需要SOAPAction,Content-Type: application/x-www-form-urlencodedhttpWebRequest.ContentType = "application/x-www-form-urlencoded";httpWebRequest.Method = "post";Stream requestStream = httpWebRequest.GetRequestStream();StreamWriter streamWriter = new StreamWriter(requestStream);streamWriter.Write(xmldata);streamWriter.Close();requestStream.Close();//byte[] vs = Encoding.UTF8.GetBytes("a=66&b=1233");//requestStream.Write(vs, 0, vs.Length);httpWebRequest.ContentLength = vs.Length;//requestStream.Close();Stream responseStream = null;StreamReader reader = null;HttpWebResponse webResponse = (HttpWebResponse)httpWebRequest.GetResponse();try{if (webResponse.StatusCode == HttpStatusCode.OK){//返回值类型 Content-Type: text/xml; charset=utf-8//StreamReader reader = new StreamReader(webResponse.GetResponseStream());responseStream = webResponse.GetResponseStream();reader = new StreamReader(responseStream);result = reader.ReadToEnd();XmlDocument xmlDocument = new XmlDocument();xmlDocument.LoadXml(result);result = xmlDocument.InnerText;}}catch (Exception ex){result = $"查询出错,原因:{ex}";}finally{reader.Close();webResponse.Close();responseStream.Close();httpWebRequest.Abort();}return result;//if (!string.IsNullOrEmpty(result))//{//    System.Xml.Serialization.XmlSerializer xmlSerializer= new System.Xml.Serialization.XmlSerializer()//}#endregion}#endregion

使用代码

                string aa = WebServiceSOAP11(4, "888");Console.WriteLine($"WebService--SOAP1.1-- 返回值:{aa}");aa = WebServiceSOAP11(6, "0000");Console.WriteLine($"WebService--SOAP1.2-- 返回值:{aa}");aa = WebServiceHTTP("a=666666&b=8888");//注意参数名称不一致会报错,a,bConsole.WriteLine($"WebService--http-- 返回值:{aa}");

运行效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/115927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习中的核方法

一、说明 线性模型很棒&#xff0c;因为它们易于理解且易于优化。他们受苦是因为他们只能学习非常简单的决策边界。神经网络可以学习更复杂的决策边界&#xff0c;但失去了线性模型良好的凸性特性。 使线性模型表现出非线性的一种方法是转换输入。例如&#xff0c;通过添加特征…

【面试经典150 | 区间】用最少数量的箭引爆气球

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;合并区间 其他语言python3 写在最后 Tag 【合并区间】【排序】【数组】 题目来源 452. 用最少数量的箭引爆气球 题目解读 每个气球都有一个占据x轴的一个范围&#xff0c;在这个范围里射出一只箭就会引爆该气球&…

C++笔记之关于函数名前的取址符

C笔记之关于函数名前的取址符 相关博文&#xff1a;C之指针探究(十一)&#xff1a;函数名的本质和函数指针 code review! 文章目录 C笔记之关于函数名前的取址符一.函数名可以被视为指向函数的地址二.sayHello和&sayHello是不是等同?三.Qt信号与槽中的取地址符& 一…

2023全新小程序广告流量主奖励发放系统源码 流量变现系统

2023全新小程序广告流量主奖励发放系统源码 流量变现系统 分享软件&#xff0c;吃瓜视频&#xff0c;或其他资源内容&#xff0c;通过用户付费买会员来变现&#xff0c;用户需要付费&#xff0c;有些人喜欢白嫖&#xff0c;所以会流失一部分用户&#xff0c;所以就写了这个系统…

Node编写用户登录接口

目录 前言 服务器 编写登录接口API 使用sql语句查询数据库中是否有该用户 判断密码是否正确 生成JWT的Token字符串 配置解析token的中间件 配置捕获错误中间件 完整的登录接口代码 前言 本文介绍如何使用node编写登录接口以及解密生成token&#xff0c;如何编写注册接…

关于 硬盘

关于 硬盘 1. 机械硬盘1.1 基本概念1.2 工作原理1.3 寻址方式1.4 磁盘磁记录方式 2. 固态硬盘2.1 基本概念2.2 工作原理 1. 机械硬盘 1.1 基本概念 机械硬盘即是传统普通硬盘&#xff0c;硬盘的物理结构一般由磁头与盘片、电动机、主控芯片与排线等部件组成。 所有的数据都是…

利用dns协议发起ddos反射攻击

利用DNS服务器发起反射型DDOS&#xff0c;攻击带宽 基本思路&#xff1a; 1、利用any类型的dns查询&#xff0c;可完成发送少量请求数据&#xff0c;获得大量返回数据。 2、将原请求地址改为受害者地址&#xff0c;则dns会向受害者返回大量数据&#xff0c;占用带宽 警告&…

QCC 音频输入输出

QCC 音频输入输出 QCC蓝牙芯片&#xff08;QCC3040 QCC3083 QCC3084 QCC5181 等等&#xff09;支持DAC、I2S、SPDIF输出&#xff0c;AUX、I2S、SPDIF、A2DP 输入 蓝牙音频输入&#xff0c;模拟输出是最常见的方式。 也可以再此基础上动态切换输入方式。 输入方式切换参考 sta…

AD9371 官方例程HDL详解之JESD204B TX侧时钟生成 (一)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 &#xff1a; AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射&#xff1a; AD9371 官方例程之 tx_jesd 与 xcvr接口映射 梳理 AD9371 时钟&#xff0c;理解采样率和各个时钟之间的关系 …

RabbitMQ基础篇 笔记

RabbitMQ 余额支付 同步调用 一步一步的来&#xff0c;支付业务写完后&#xff0c;如果之后加需求&#xff0c;还需要增加代码&#xff0c;不符合开闭原则。 性能上也有问题&#xff0c;openfeign是同步调用&#xff0c;性能太差。 同步调用耦合太多。 同步的优势是可以立…

网站、小程序常见布局样式记录

文章目录 &#x1f380;前言&#xff1a;&#x1f415;网页样式展示小程序&#xff1a;《携程网》&#x1f380;持续更新... &#x1f380;前言&#xff1a; 本篇博客会收藏一些作者见到的网页、小程序页面&#xff0c;目的是用来寻找制作项目网页页面的灵感&#xff0c;有需要…

mysql第一篇---索引

文章目录 mysql第一篇---索引索引的数据结构为什么使用索引&#xff1f;索引的及其优缺点InnoDB中索引的推演常见的索引概念InnoDB的B树索引的注意事项MyISAM中索引方案索引的代价MySQL数据结构选择的合理性 mysql第一篇—索引 索引的数据结构 为什么使用索引&#xff1f; 索…

修炼k8s+flink+hdfs+dlink(六:学习k8s-pod)

一&#xff1a;增&#xff08;创建&#xff09;。 直接进行创建。 kubectl run nginx --imagenginx使用yaml清单方式进行创建。 直接创建方式&#xff0c;并建立pod。 kubectl create deployment my-nginx-deployment --imagenginx:latest 先创建employment&#xff0c;不…

紫光展锐携中国联通完成RedCap芯片V517孵化测试

近日&#xff0c;紫光展锐携手中国联通5G物联网OPENLAB开放实验室&#xff08;简称“OPENLAB实验室”&#xff09;共同完成RedCap芯片V517创新孵化&#xff0c;并实现在联通5G全频段3.5GHz、2.1GHz、900MHz下的端到端业务验证测试。 V517是一款基于紫光展锐5G成熟平台设计与研发…

Java反射实体组装SQL

之前在LIS.Core定义了实体特性&#xff0c;在LIS.Model给实体类加了表特性&#xff0c;属性特性&#xff0c;外键特性等。ORM要实现增删改查和查带外键的父表信息就需要解析Model的特性和实体信息组装SQL来供数据库驱动实现增删改查功能。 实现实体得到SQL的工具类&#xff0c…

DOS攻击-ftp_fuzz.py

搭建FTP 使用AlphaFuzzer的FTPFUSS进行攻击 挖掘漏洞&#xff0c;自动用特殊字符看能不能把服务器崩掉 这些都是测试的目录 不能随意使用&#xff0c;可能会把C盘内容清掉 也可以自己写脚本测试下

二叉排序树(BST)

二叉排序树 基本介绍 二叉排序树创建和遍历 class Node:"""创建 Node 节点"""value: int 0left Noneright Nonedef __init__(self, value: int):self.value valuedef add(self, node):"""添加节点node 表示要添加的节点&quo…

使用序列化技术保存数据 改进 IO流完成项目实战水果库存系统

上一节内容是 使用IO流完成项目实战水果库存系统https://blog.csdn.net/m0_65152767/article/details/133999972?spm1001.2014.3001.5501 package com.csdn.fruit.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java…

Vue单文件组件

一、.vue文件 我们使用Vue的单文件组件的时候&#xff0c;一个.vue文件就是一个组件。 例如我们创建一个School组件&#xff1a; 二、组件的结构 我们编写网页代码的时候有HTML结构、CSS样式、JS交互。 组件里也是同样存在这三种结构的&#xff1a; <template><d…

(十一)Python模块和包

前面章节中&#xff0c;我们已经使用了很多模块&#xff08;如 string、sys、os 等&#xff09;&#xff0c;通过向程序中导入这些模块&#xff0c;我们可以使用很多“现成”的函数实现想要的功能。 那么&#xff0c;模块到底是什么&#xff0c;模块内部到底是什么样子的&…