c# Get方式调用WebAPI,WebService等接口
/// <summary>
/// 利用WebRequest/WebResponse进行WebService调用的类
/// </summary>
public class WebServiceHelper
{//<webServices>// <protocols>// <add name="HttpGet"/>// <add name="HttpPost"/>// </protocols>//</webServices>/// <summary>/// 需要WebService支持Get调用/// </summary>public string QueryGetWebService(string URL, string MethodName, Hashtable Pars){string detilurl = URL + "/" + MethodName + "?" + ParsToString(Pars);HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(detilurl);request.Method = "GET";request.ContentType = "application/x-www-form-urlencoded";SetWebRequest(request);try{return ReadXmlResponseString(request.GetResponse());}catch (Exception ex){return "NG:"+ex.ToString();}}/// <summary>/// 针对信息解读(根据实际调整)/// </summary>public string GetReturnInnerMsg(string jsonStr){XmlDocument doc = new XmlDocument();doc.LoadXml(jsonStr);XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(doc.NameTable);xmlnsManager.AddNamespace("ns", "http://wserver");XmlNode returnNode = doc.SelectSingleNode("//ns:return", xmlnsManager);if (returnNode != null){if (returnNode.InnerText.Contains(":")){return returnNode.InnerText.Replace(" ","").Split(':')[1];}return returnNode.InnerText;}else{return "";}}/// <summary>/// 设置WEB请求/// </summary>/// <param name="request"></param>private void SetWebRequest(HttpWebRequest request){request.Credentials = CredentialCache.DefaultCredentials;request.Timeout = 10000;}/// <summary>/// 将Hashtable转换成WEB请求键值对字符串/// </summary>/// <param name="Pars"></param>/// <returns></returns>private string ParsToString(Hashtable Pars){StringBuilder sb = new StringBuilder();foreach (string k in Pars.Keys){if (sb.Length > 0){sb.Append("&");}// sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(Pars[k].ToString()));sb.Append(k+ "=" +Pars[k].ToString());}return sb.ToString();}private string ReadXmlResponseString(WebResponse response){StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);string retXml = sr.ReadToEnd();sr.Close();return retXml;}
}
接口无非就是拼接字符串发动到指定的网站
POST 与 Get 一样,改下参数就行
例如:
http://localhost:8080/axis2/services/AAAA/getVerifyCode?args0=abc
返回信息
<ns:getVerifyCodeResponse xmlns:ns="http://wserver">
<ns:return>C</ns:return>
</ns:getVerifyCodeResponse>
使用方法
WebServiceHelper webServiceHelper = new WebServiceHelper();
string url="http://localhost:8080/axis2/services/AAAA";
Hashtable ht = new Hashtable(); //创建一个Hashtable实例
//正式库
ht.Add("args0", "abc");
//发送数据
string msg = webServiceHelper.QueryGetWebService(url, "getVerifyCode", ht);
if (msg.Substring(0, 2)=="NG")
{
MessageForm mf = new MessageForm("总成,加密接口通信异常!", msg, true);
mf.ShowDialog();
return;
}
//接收反馈信息
string EnBarCode = webServiceHelper.GetReturnInnerMsg(msg);

-------------------------------------------------------------
asmx 调用: 不推荐,每次使用都需要反射
天气的测试地址
WeatherWebService Web 服务
http://www.webxml.com.cn/WebServices/WeatherWebService.asmxwsdl
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
用方法一:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=上海
方法二:
/* 调用方式* string url = "http://www.webservicex.net/globalweather.asmx" ;* string[] args = new string[2] ;* args[0] = "Hangzhou";* args[1] = "China" ;* object result = WebServiceHelper.InvokeWebService(url ,"GetWeather" ,args) ;* Response.Write(result.ToString());*/class WebServiceHelper{#region InvokeWebService/// <summary>/// 动态调用web服务/// </summary>/// <param name="url">WSDL服务地址</param>/// <param name="methodname">方法名</param>/// <param name="args">参数</param>/// <returns></returns>public static object InvokeWebService(string url, string methodname, object[] args){return WebServiceHelper.InvokeWebService(url, null, methodname, args);}/// <summary>/// 动态调用web服务/// </summary>/// <param name="url">WSDL服务地址</param>/// <param name="classname">类名</param>/// <param name="methodname">方法名</param>/// <param name="args">参数</param>/// <returns></returns>public static object InvokeWebService(string url, string classname, string methodname, object[] args){string @namespace = "EnterpriseServerBase.WebService.DynamicWebCalling";if ((classname == null) || (classname == "")){classname = WebServiceHelper.GetWsClassName(url);}try{//获取WSDLWebClient wc = new WebClient();Stream stream = wc.OpenRead(url + "?WSDL");ServiceDescription sd = ServiceDescription.Read(stream);ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();sdi.AddServiceDescription(sd, "", "");CodeNamespace cn = new CodeNamespace(@namespace);//生成客户端代理类代码CodeCompileUnit ccu = new CodeCompileUnit();ccu.Namespaces.Add(cn);sdi.Import(cn, ccu);CSharpCodeProvider icc = new CSharpCodeProvider();//设定编译参数CompilerParameters cplist = new CompilerParameters();cplist.GenerateExecutable = false;cplist.GenerateInMemory = true;cplist.ReferencedAssemblies.Add("System.dll");cplist.ReferencedAssemblies.Add("System.XML.dll");cplist.ReferencedAssemblies.Add("System.Web.Services.dll");cplist.ReferencedAssemblies.Add("System.Data.dll");//编译代理类CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);if (true == cr.Errors.HasErrors){System.Text.StringBuilder sb = new System.Text.StringBuilder();foreach (System.CodeDom.Compiler.CompilerError ce in cr.Errors){sb.Append(ce.ToString());sb.Append(System.Environment.NewLine);}throw new Exception(sb.ToString());}//生成代理实例,并调用方法System.Reflection.Assembly assembly = cr.CompiledAssembly;Type t = assembly.GetType(@namespace + "." + classname, true, true);object obj = Activator.CreateInstance(t);System.Reflection.MethodInfo mi = t.GetMethod(methodname);return mi.Invoke(obj, args);/*PropertyInfo propertyInfo = type.GetProperty(propertyname);return propertyInfo.GetValue(obj, null);*/}catch (Exception ex){throw new Exception(ex.InnerException.Message, new Exception(ex.InnerException.StackTrace));}}private static string GetWsClassName(string wsUrl){string[] parts = wsUrl.Split('/');string[] pps = parts[parts.Length - 1].Split('.');return pps[0];}#endregion}
string url = "http://10.255.30.40:9003/LESPrepareDeliveryService.asmx";
//方法
string fuc = "getSpsMatDt";
//参数
string par = "3210;A1;NS001";
int Pcount = par.Split(';').Count() + 1;
//生成参数信息
string[] args = new string[Pcount];
for (int i = 0; i < Pcount - 1; i++)
{
args[i] = par.Split(';')[i];
}
args[Pcount - 1] = dtm;
//获取Webservice的数据信息
object result = WebServiceHelper.InvokeWebService(url, fuc, args);
DataTable dt = (DataTable)result;
return dt;
相关文章:
c# Get方式调用WebAPI,WebService等接口
/// <summary> /// 利用WebRequest/WebResponse进行WebService调用的类 /// </summary> public class WebServiceHelper {//<webServices>// <protocols>// <add name"HttpGet"/>// <add name"HttpPost"/>// …...
银行数据仓库体系实践(11)--数据仓库开发管理系统及开发流程
数据仓库管理着整个银行或公司的数据,数据结构复杂,数据量庞大,任何一个数据字段的变化或错误都会引起数据错误,影响数据应用,同时业务的发展也带来系统不断升级,数据需求的不断增加,数据仓库需…...
微信小程序引导用户打开定位授权通用模版
在需要使用位置信息的页面(例如 onLoad 或 onShow 生命周期函数)中调用 wx.getSetting 方法检查用户是否已经授权地理位置权限: Page({onLoad: function() {wx.getSetting({success: res > {if (res.authSetting[scope.userLocation]) {/…...
JVM篇----第十篇
系列文章目录 文章目录 系列文章目录前言一、JAVA 强引用二、JAVA软引用三、JAVA弱引用四、JAVA虚引用五、分代收集算法前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧…...
DevSecOps 参考模型介绍
目录 一、参考模型概述 1.1 概述 二、参考模型分类 2.1 DevOps 组织型模型 2.1.1 DevOps 关键特性 2.1.1.1 模型特性图 2.1.1.2 特性讲解 2.1.1.2.1 自动化 2.1.1.2.2 多边协作 2.1.1.2.3 持续集成 2.1.1.2.4 配置管理 2.1.2 DevOps 生命周期 2.1.2.1 研发过程划分…...
什么是okhttp?
OkHttp简介: OkHttp 是一个开源的、高效的 HTTP 客户端库,由 Square 公司开发和维护。它为 Android 和 Java 应用程序提供了简单、强大、灵活的 HTTP 请求和响应的处理方式。OkHttp 的设计目标是使网络请求变得更加简单、快速、高效,并且支持…...
R语言基础学习-02 (此语言用途小众 用于数学 生物领域 基因分析)
变量 R 语言的有效的变量名称由字母,数字以及点号 . 或下划线 _ 组成。 变量名称以字母或点开头。 变量名是否正确原因var_name2.正确字符开头,并由字母、数字、下划线和点号组成var_name%错误% 是非法字符2var_name错误不能数字开头 .var_name, var.…...
CTF-WEB的入门真题讲解
EzLogin 第一眼看到这个题目我想着用SQL注入 但是我们先看看具体的情况 我们随便输入admin和密码发现他提升密码不正确 我们查看源代码 发现有二个不一样的第一个是base64 意思I hava no sql 第二个可以看出来是16进制转化为weak通过发现是个弱口令 canyouaccess 如果…...
【C项目】顺序表
简介:本系列博客为C项目系列内容,通过代码来具体实现某个经典简单项目 适宜人群:已大体了解C语法同学 作者留言:本博客相关内容如需转载请注明出处,本人学疏才浅,难免存在些许错误,望留言指正 作…...
【Docker】在Windows下使用Docker Desktop创建nginx容器并访问默认网站
欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…...
详讲api网关之kong的基本概念及安装和使用(二)
consul的服务注册与发现 如果不知道consul的使用,可以点击上方链接,这是我写的关于consul的一篇文档。 upstreamconsul实现负载均衡 我们知道,配置upstream可以实现负载均衡,而consul实现了服务注册与发现,那么接下来…...
取消Vscode在输入符号时自动补全
取消Vscode在输入符号时自动补全 取消Vscode在输入符号时自动补全问题演示解决方法 取消Vscode在输入符号时自动补全 问题演示 在此状态下输入/会直接自动补全, 如下图 笔者想要达到的效果为可以正常输入/而不进行补全, 如下图 解决方法 在设置->文本编辑器->建议, 取消…...
ElementUI Form:Input 输入框
ElementUI安装与使用指南 Input 输入框 点击下载learnelementuispringboot项目源码 效果图 el-input.vue 页面效果图 项目里el-input.vue代码 <script> export default {name: el_input,data() {return {input: ,input1: ,input2: ,input3: ,input4: ,textarea: …...
Vue_Router_守卫
路由守卫:路由进行权限控制。 分为:全局守卫,独享守卫,组件内守卫。 全局守卫 //创建并暴露 路由器 const routernew Vrouter({mode:"hash"//"hash路径出现#但是兼容性强,history没有#兼容性差"…...
GDB调试技巧实战--自动化画出类关系图
1. 前言 上节我们在帖子《Modern C++利用工具快速理解std::tuple的实现原理》根据GDB的ptype命令快速的理解了std::tuple数据结构的实现,但是手动一个个打印,然后手动画出的UML图,这个过程明显可以自动化。 本文旨在写一个GDB python脚本把这个过程自动化。 本脚本也可以用…...
python使用Schedule
目录 一:使用场景: 二:参数 三:实例 "Schedule"在Python中通常指的是时间调度或任务计划。Python中有多个库可以用来处理时间调度和任务计划,其中最流行的是schedule库。 一&#x…...
Linux系列之查看cpu、内存、磁盘使用情况
查看磁盘空间 df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。使用df -h命令,加个-h参数是为了显示GB MB KB单位,这样更容易查看 Filesystem …...
【C语言】socket编程接收问题
一、recv()函数接收到的返回值为0表示对端已经关闭 在TCP套接字编程中,通过recv()函数接收到的返回值为0通常表示对端已经关闭了套接字的发送部分。这是因为TCP是一个基于连接的协议,其中有定义明确的连接建立和终止流程;当对端调用close()或…...
Python与ArcGIS系列(二十)GDAL之合并shp和geojson要素图层
目录 0 简述1 代码实现2 结果展示0 简述 Shp格式是GIS中非常重要的数据格式,主要在Arcgis中使用,但在进行很多基于网页的空间数据可视化时,通常只接受GeoJSON格式的数据,众所周知JSON是利用键值对+嵌套来表示数据的一种格式,以其轻量、易解析的优点,被广泛使用与各种领域…...
CGAL5.4.1 边塌陷算法
目录 1、使用曲面网格的示例 2、使用默认多面体的示例 3、使用丰富多面体的示例 主要对1、使用曲面网格的示例 进行深度研究 CGAL编译与安装CGAL安装到验证到深入_cgal测试代码-CSDN博客 参考资料CGAL 5.4.5 - Triangulated Surface Mesh Simplification: User Manual …...
【技术专题】Reloaded-II依赖循环与无限下载问题的系统性解决方案
【技术专题】Reloaded-II依赖循环与无限下载问题的系统性解决方案 【免费下载链接】Reloaded-II Universal .NET Core Powered Modding Framework for any Native Game X86, X64. 项目地址: https://gitcode.com/gh_mirrors/re/Reloaded-II 问题场景:模组依赖…...
DeepSeek-R1、V2、V3如何选?:3分钟掌握版本差异与业务匹配公式
更多请点击: https://kaifayun.com 第一章:DeepSeek-R1、V2、V3如何选?:3分钟掌握版本差异与业务匹配公式 DeepSeek-R1、V2、V3 是 DeepSeek 系列中面向不同推理场景演进的三个关键版本,其核心差异不在参数量堆叠&…...
GetQzonehistory:免费永久保存QQ空间说说的终极解决方案
GetQzonehistory:免费永久保存QQ空间说说的终极解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间里那些珍贵的青春记忆会随着时间流逝而消失&…...
学术 PPT 创作提速方案:九款 AI 工具,轻松攻克毕业答辩制作难题
okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPTAI PPT制作 - Okbiye智能写作https://www.okbiye.com/ppt 毕业答辩阶段,演示文稿制作成为多数学子耗时耗力的一大关卡。梳理论文脉络、匹配专业模板、规整内容排版、优化数据展示࿰…...
3个关键步骤解锁Axure中文界面:从专业术语到流畅体验的完整指南
3个关键步骤解锁Axure中文界面:从专业术语到流畅体验的完整指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn Axur…...
2026年AI写作辅助网站盘点:12款神器助你高效完成初稿生成、排版和降AI率
随着 AI 技术的持续突破,2026 年的论文写作辅助工具市场已进入“智能化、定制化、合规化”的新阶段。从本科生的课程论文到研究生的学位论文,再到科研人员的期刊投稿,AI 工具正在为不同层次的学术需求提供高效、精准的解决方案。本文基于权威…...
终极指南:如何用novel-downloader轻松保存网络小说到本地
终极指南:如何用novel-downloader轻松保存网络小说到本地 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否曾经遇到过心爱的小说突然从网站上消失的窘境?…...
3分钟搞定学期教材:中小学智慧教育平台电子课本下载全攻略 [特殊字符]
3分钟搞定学期教材:中小学智慧教育平台电子课本下载全攻略 📚 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本…...
终极免费指南:Wand-Enhancer解锁WeMod完整功能体验
终极免费指南:Wand-Enhancer解锁WeMod完整功能体验 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否厌倦了WeMod专业版的高昂费用&…...
Warcraft Helper完整指南:让经典魔兽争霸3在现代系统完美运行
Warcraft Helper完整指南:让经典魔兽争霸3在现代系统完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在Windows 1…...
