C# http webservice wsdl soap xml 通过C#调用webservice基于sop协议的接口

C# http webservice wsdl soap xml 通过C#调用webservice基于sop协议的接口

一:注意事项

接口地址示例:https://********/DataExchangeForCBS?wsdl
http:///soap/JHIPLIB.SoAP.BS.StreamService.cls?CfgItem=JH2006绩效系统信息日

1:基于soap协议的接口,传输的数据为xml格式,在对接其他系统接口的时候,接口文档可能会给出的参数格式为json,这时候需要注意,可能说的是xml包json的格式 例如 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:quer="http://query.powerchinasupplier.epoint.com/"> <soapenv:Header/> <soapenv:Body> <quer:SendCbsPjInfo> <!--Optional:--> <quer:sendInfo>{ "PingshenDate": "2022-04-17 00:00:00", "PingshenDateTo": "2022-04-18 15:11:00", "ValidateData": "djsz" }</quer:sendInfo> </quer:SendCbsPjInfo> </soapenv:Body> </soapenv:Envelope> 
 <quer:sendInfo>内部包的是实际的参数,但是必须有外部的xml包起来 

在使用C#调用用http请求方式调用接口的时候,需要注意 contenttype = "text/xml;charset=utf-8";
还有就是header头中,需要加入 header.Add("SOAPAction", "http://*********/SendCbsPjInfo");
这里的SOAPAction代表的应该是对面接口的具体地址 SendCbsPjInfo代表的是提供的方法名
如果不知道SOAPAction地址是什么的话,可以通过SoapUI软件查看
SoapUI使用步骤:
1.

www.zeeklog.com - C# http webservice wsdl soap xml 通过C#调用webservice基于sop协议的接口


2.

www.zeeklog.com - C# http webservice wsdl soap xml 通过C#调用webservice基于sop协议的接口

3.

www.zeeklog.com - C# http webservice wsdl soap xml 通过C#调用webservice基于sop协议的接口


4.

www.zeeklog.com - C# http webservice wsdl soap xml 通过C#调用webservice基于sop协议的接口

这里就可以看到SOAPAction的地址了,拿过来用就行了

附上C#代码:

 string url = "接口地址";//如果是?wsdl结尾的 需要把?wsdl删除掉 string contenttype = "text/xml;charset=utf-8"; Hashtable header = new Hashtable(); header.Add("SOAPAction", "上面获取到的SOAPAction地址"); string data = LoadXmls(@"{'PingshenDate': '2022-04-17 00:00:00','PingshenDateTo': '2022-04-18 15:11:00','ValidateData': 'djsz'}");//这里是传递参数,拼接正规的完整xml入参 string filexml = Http(url, "post", contenttype, header, data); XmlDocument doc1 = new XmlDocument(); doc1.LoadXml(filexml); //将获取到的结果加载为xml对象 string model = doc1.InnerText;//直接读取返回值 也就是cdata内部的内容 
 /// <summary> /// 接口入参拼接 /// </summary> /// <param name="data"></param> /// <returns></returns> public string LoadXmls(string data) { XmlDocument doc1 = new XmlDocument(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(@"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:quer='http://query.powerchinasupplier.epoint.com/'> <soapenv:Header/> <soapenv:Body> <quer:SendCbsPjInfo> <!--Optional:--> <quer:sendInfo>"); stringBuilder.Append(data); stringBuilder.Append(@"</quer:sendInfo> </quer:SendCbsPjInfo> </soapenv:Body> </soapenv:Envelope> "); return stringBuilder.ToString(); } 
 /// <summary> /// 调用soap协议接口 webservice wsdl /// </summary> /// <param name="url"></param> /// <param name="method"></param> /// <param name="contenttype"></param> /// <param name="header"></param> /// <param name="data"></param> /// <returns></returns> public static string Http(string url, string method = "post", string contenttype = "text/xml;charset=utf-8", Hashtable header = null, string data = null) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = string.IsNullOrEmpty(method) ? "post" : method; request.ContentType = string.IsNullOrEmpty(contenttype) ? "text/xml;charset=utf-8" : contenttype; if (header != null) { foreach (var i in header.Keys) { request.Headers.Add(i.ToString(), header[i].ToString()); } } if (!string.IsNullOrEmpty(data)) { Stream RequestStream = request.GetRequestStream(); byte[] bytes = Encoding.UTF8.GetBytes(data); RequestStream.Write(bytes, 0, bytes.Length); RequestStream.Close(); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream ResponseStream = response.GetResponseStream(); StreamReader StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8")); string re = StreamReader.ReadToEnd(); StreamReader.Close(); ResponseStream.Close(); return re; } 

Read more

使用 VS Code 连接 MySQL 数据库

使用 VS Code 连接 MySQL 数据库

文章目录 * 前言 * VS Code下载安装 * 如何在VS Code上连接MySQL数据库 * 1、打开扩展 * 2、安装MySQL插件 * 3、连接 * 导入和导出表结构和数据 前言 提示:这里可以添加本文要记录的大概内容: 听说VS Code不要钱,功能还和 Navicat 差不多,还能在上面打游戏 但是没安装插件是不行的 发现一个非常牛的博主 还有一个非常牛的大佬 提示:以下是本篇文章正文内容,下面案例可供参考 VS Code下载安装 VS Code下载安装 如何在VS Code上连接MySQL数据库 本篇分享是在已有VS Code这个软件的基础上,数据库举的例子是MySQL 1、打开扩展 2、安装MySQL插件 在搜索框搜索 MySQL和 MySQL Syntax,下载这三个插件 点击下面的插件,选择【install】安装

By
RustFS 保姆级上手指南:国产开源高性能对象存储

RustFS 保姆级上手指南:国产开源高性能对象存储

最近在给项目选型对象存储的时候,发现一个挺有意思的现象:一边是MinIO社区版功能逐渐“躺平”,另一边是大家对存储性能和安全性的要求越来越高。就在这时,一个叫 RustFS 的国产开源项目闯入了我的视野。 折腾了一阵子后,我感觉这玩意儿确实有点东西。它用Rust语言写,天生就带着高性能和内存安全的基因,性能号称比MinIO快一大截,而且用的是对商业友好的Apache 2.0协议。今天,我就手把手带大家从零开始,搭建一个属于自己的RustFS服务,体验一下国产存储的威力。 一、 RustFS是什么?为什么值得你关注? 简单说,RustFS是一个 分布式对象存储系统 。你可以把它理解成一个你自己搭建的、功能跟阿里云OSS、亚马逊S3几乎一样的“私有云盘”。 但它有几个非常突出的亮点,让我觉得必须试试: * 性能猛兽 :基于Rust语言开发,没有GC(垃圾回收)带来的性能抖动,官方数据显示在4K随机读场景下,性能比MinIO高出40%以上,内存占用还不到100MB,简直是“小钢炮”。 * 100%S3兼容 :这意味着你现有的所有使用S3 API的代码、工具(比如AWS

By