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.rhkb.cn/news/168239.html

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

相关文章

java基础面试题

java后端面试题大全 1.java基础1.1 java中和equals的区别1.2 String、StringBuffer、StringBuilder的区别1.3 intern方法的作用及原理1.4 String不可变的含义1.5 static用法、使用位置、实例1.6 为什么静态方法不能调用非静态方法和变量1.7 异常/Exception1.7 try/catch/finall…

请求转发和响应重定向

请求转发与响应重定向是什么&#xff1f; 请求转发和响应重定向是两种在HTTP协议中常见的操作&#xff0c;用于在服务器和客户端之间传递数据。 请求转发&#xff08;RequestDispatcher&#xff09;是服务器收到请求后&#xff0c;从一个资源跳转到另一个资源的操作。这种操作…

QCC 音频输入输出

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

SOLIDWORKS 2024新功能 3D CAD三维机械设计10大新功能

SOLIDWORKS 2024新增功能 - 3D CAD三维机械设计 10大新增功能 1. 先前版本的兼容性 •利用您订阅的 SOLIDWORKS&#xff0c;可将您的 SOLIDWORKS 设计作品保存为旧版本&#xff0c;与使用旧版本 SOLIDWORKS 的供应商无缝协作。 •可将零件、装配体和工程图保存为最新版本…

redis 宕机恢复

1.集群现在状态 6个进程 主从分配如下 2. 关闭其中一个主节点 可以看到从节点转换成了主节点&#xff0c;7002主节点处在失败状态&#xff1a; 3.重新启动失败节点 可以看到启动后成为从节点&#xff1a; 另外&#xff0c;如果主节点宕机&#xff0c;从节点转换为主节点…

【1.总纲】

目录 知识框架No.0 总纲安排No.1课程安排一、目标二、内容三、 学到 No.2 深度学习介绍一、AI地图二、图片分类三、物体检测和分割四、样式迁移五、人脸合成六、文字生成图片七、文字生成-GPT八、无人驾驶九、广告点击 No.3 安装No.3 安装 知识框架 No.0 总纲安排 B站网址&…

中文编程开发语言编程实际案例:程序控制灯电路以及桌球台球室用这个程序计时计费

中文编程开发语言编程实际案例&#xff1a;程序控制灯电路以及桌球台球室用这个程序计时计费 上图为&#xff1a;程序控制的硬件设备电路图 上图为&#xff1a;程序控制灯的开关软件截图&#xff0c;适用范围比如&#xff1a;台球厅桌球室的计时计费管理&#xff0c;计时的时候…

Shell动态条进度

代码&#xff1a; #!/bin/bashfunction dongtai(){ i0 bar index0 arr( "|" "/" "-" "\\" )while [ $i -le 100 ] dolet indexindex%4printf "[]准备开始:[%-100s][%d%%][\e[43;46;1m%c\e[0m]\r" "$bar" "$…

深度学习---卷积神经网络

卷积神经网络概述 卷积神经网络是深度学习在计算机视觉领域的突破性成果。在计算机视觉领域。往往输入的图像都很大&#xff0c;使用全连接网络的话&#xff0c;计算的代价较高。另外图像也很难保留原有的特征&#xff0c;导致图像处理的准确率不高。 卷积神经网络&#xff0…

嵌入式linux系统设备树实例分析

前言 我们可以从LED程序中榨取很多知识&#xff1a;基本的驱动框架、驱动的简单分层、驱动的分层分离思想、总线设备驱动模型、设备树等。这大多都是结合韦老师的教程学的。 这篇笔记结合第6个demo&#xff08;基于设备树&#xff09;来学习、分析&#xff1a; 框图 下面是L…

JMeter添加插件

一、前言 ​ 在我们的工作中&#xff0c;我们可以利用一些插件来帮助我们更好的进行性能测试。今天我们来介绍下Jmeter怎么添加插件&#xff1f; 二、插件管理器 ​ 首先我们需要下载插件管理器jar包 下载地址&#xff1a;Install :: JMeter-Plugins.org 然后我们将下载下来…

《红蓝攻防对抗实战》一. 隧道穿透技术详解

一.隧道穿透技术详解 从技术层面来讲&#xff0c;隧道是一种通过互联网的基础设施在网络之间传递数据的方式&#xff0c;其中包括数据封装、传输和解包在内的全过程,使用隧道传递的数据(或负载)可以使用不同协议的数据帧或包。 假设我们获取到一台内网主机的权限&#xff0c;…

如何制作.exe免安装绿色单文件程序,将源代码打包成可独立运行的exe文件

环境: rustdesk编译文件和文件夹 文件程序制作工具 问题描述: 如何制作.exe免安装绿色单文件程序,将源代码打包成可独立运行的exe文件,像官网那种呢? 将下面编译好的rustdesk文件夹制作成一个.exe免安装绿色单文件程序,点击exe就可以运行 在github上找了半天也没有…

AIGC笔记--基于DDPM实现图片生成

目录 1--扩散模型 2--训练过程 3--损失函数 4--生成过程 5--参考 1--扩散模型 完整代码&#xff1a;ljf69/DDPM 扩散模型包含两个过程&#xff0c;前向扩散过程和反向生成过程。 前向扩散过程对一张图像逐渐添加高斯噪声&#xff0c;直至图像变为随机噪声。 反向生成过程…

推荐微软的开源课程《AI-For-Beginners》

今天给大家推荐一个对新手非常友好的AI入门课程《AI-For-Beginners》。 该课程由微软推出&#xff0c;为期12周&#xff0c;共24课时&#xff0c;对比Google的AI入门课更通俗易懂一些&#xff0c;强烈推荐刚入门的AI小白们学习&#xff01;而且是免费&#xff01;课程资源看文…

SQL UPDATE 语句(更新表中的记录)

SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录。 还可以使用AND或OR运算符组合多个条件。 SQL UPDATE 语法 具有WHERE子句的UPDATE查询的基本语法如下所示&#xff1a; UPDATE table_name SET column1 value1, column2 value2, ... WHERE conditi…

【第三天】C++类和对象进阶指南:从堆区空间操作到友元的深度掌握

一、new和delete 堆区空间操作 1、new和delete操作基本类型的空间 new与C语言中malloc、delete和C语言中free 作用基本相同 区别&#xff1a; new 不用强制类型转换 new在申请空间的时候可以 初始化空间内容 2、 new申请基本类型的数组 3、new和delete操作类的空间 4、new申请…

数据可视化在行业解决方案中的实践应用 ——华为云Astro Canvas大屏开发研究及指南

本文主要探讨华为云Astro Canvas在数据可视化大屏开发中的应用及效果。首先阐述Astro Canvas的基本概念、功能和特性说明&#xff0c;接着集中分析展示其在教育、金融、交通行业等不同领域实际应用案例&#xff1b;之后&#xff0c;详细介绍使用该工具进行大屏图表创建的开发指…

从零开始 Spring Cloud 15:多级缓存

从零开始 Spring Cloud 15&#xff1a;多级缓存 多级缓存架构 传统的缓存使用 Redis&#xff0c;大致架构如下&#xff1a; 这个架构存在一些问题&#xff1a; 请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时&#xff0c;会对数据库产生冲…

MySQL实践——分页查询优化

问题现象 一个客户业务系统带有分页查询功能&#xff0c;但是随着查询页数的增加&#xff0c;越往后查询性能越差&#xff0c;有时一个查询可能需要1分钟左右的时间。分页查询的写法类似于&#xff1a; select * from employees limit 250000,5000;这是最传统的一种分页查询写…