返回顶部
首页 > 资讯 > 精选 >C#中怎么动态调用WebService
  • 732
分享到

C#中怎么动态调用WebService

2023-06-18 00:06:59 732人浏览 薄情痞子
摘要

本篇文章为大家展示了C#中怎么动态调用WEBService,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。public static object InvokeWebSe

本篇文章为大家展示了C#中怎么动态调用WEBService,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

public static object InvokeWebService(string url,   string methodname, object[] args)

其中,url是Web服务的地址,methodname是要调用服务方法名,args是要调用Web服务所需的参数,返回值就是web服务返回的结果了。

要实现这样的功能,你需要这几个方面的技能:反射、CodeDom、编程使用C#编译器、WebService。在了解这些知识后,就可以容易的实现web服务的动态调用了:

usingSystem.CodeDom.Compiler;  usingSystem;  usingSystem.net;  usingSystem.CodeDom;  usingMicrosoft.CSharp;  usingSystem.io;  usingSystem.Web.Services.Description;  usingSystem.Collections.Generic;  usingSystem.Reflection;  namespacecjl.WebServices  {  publicclassDynamicWebServices  {  staticSortedList〈string,Type〉_typeList=  newSortedList〈string,Type〉();   #regionInvokeWebService   staticstringGetCacheKey(stringurl,  strinGClassName)  {  returnurl.ToLower()+className;  }  staticTypeGetTypeFromCache(stringurl,  stringclassName)  {  stringkey=GetCacheKey(url,className);  foreach(KeyValuePair〈string,Type〉  pairin_typeList)  {  if(key==pair.Key)  {  returnpair.Value;  }  }   returnnull;  }  staticTypeGetTypeFromWebService  (stringurl,stringclassName)  {  string@namespace="EnterpriseServerBase.  WebService.DynamicWebCalling";  if((className==null)||(className==""))  {  className=GetWsClassName(url);  }   //获取WSDL  WebClientwc=newWebClient();  Streamstream=wc.OpenRead(url+"?WSDL");  ServiceDescriptionsd=ServiceDescription.  Read(stream);  ServiceDescriptionImportersdi=  newServiceDescriptionImporter();  sdi.AddServiceDescription(sd,"","");  CodeNamespacecn=newCodeNamespace  (@namespace);   //生成客户端代理类代码  CodeCompileUnitccu=newCodeCompileUnit();  ccu.Namespaces.Add(cn);  sdi.Import(cn,ccu);  CSharpcodeProvidercsc=newCSharpCodeProvider();  ICodeCompilericc=csc.CreateCompiler();   //设定编译参数  CompilerParameterscplist=newCompilerParameters();  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");   //编译代理类  CompilerResultscr=  icc.CompileAssemblyFromDom(cplist,ccu);  if(true==cr.Errors.HasErrors)  {  System.Text.StringBuildersb=  newSystem.Text.StringBuilder();  foreach(System.CodeDom.Compiler.  CompilerErrorceincr.Errors)  {  sb.Append(ce.ToString());  sb.Append(System.Environment.NewLine);  }  thrownewException(sb.ToString());  }   //生成代理实例,并调用方法  System.Reflection.Assemblyassembly=  cr.CompiledAssembly;  Typet=assembly.GetType(@namespace+".  "+className,true,true);  returnt;  }   //动态调用web服务  publicstaticobjectInvokeWebService  (stringurl,stringmethodName,object[]args)  {  returnInvokeWebService(url,null,  methodName,args);  }   publicstaticobjectInvokeWebService(stringurl,  stringclassName,stringmethodName,object[]args)  {  try  {  Typet=GetTypeFromCache(url,className);  if(t==null)  {  t=GetTypeFromWebService(url,className);   //添加到缓冲中  stringkey=GetCacheKey(url,className);  _typeList.Add(key,t);  }   objectobj=Activator.CreateInstance(t);  MethodInfomi=t.GetMethod(methodName);  returnmi.Invoke(obj,args);  }  catch(Exceptionex)  {  thrownewException(ex.InnerException.Message,  newException(ex.InnerException.StackTrace));  }  }  privatestaticstringGetWsClassName(stringwsUrl)  {  string[]parts=wsUrl.Split('/');  string[]pps=parts[parts.Length-1].Split('.');  returnpps[0];  }  #endregion  }  }

上面的注释已经很好的说明了各代码段的功能,下面给个例子看看,这个例子是通过访问Http://www.webservicex.net/globalweather.asmx服务来获取各大城市的天气状况。

string url = "http://www.webservicex.  net/globalweather.asmx";  string[] args = new string[2];  args[0] = this.textBox_CityName.Text;  args[1] = "China";  object result = WebServiceHelper.  InvokeWebService(url, "GetWeather", args);  this.label_Result.Text = result.ToString();

上述内容就是C#中怎么动态调用WebService,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: C#中怎么动态调用WebService

本文链接: https://lsjlt.com/news/294858.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中怎么动态调用WebService
    本篇文章为大家展示了C#中怎么动态调用WebService,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。public static object InvokeWebSe...
    99+
    2023-06-18
  • c#怎么调用webservice接口
    要调用Web服务接口,首先需要添加对Web服务的引用。 在Visual Studio中,右键单击项目,选择“添加”>“引用”。 在...
    99+
    2023-10-30
    C# webservice
  • vbscript中怎么调用WebService
    本篇文章为大家展示了vbscript中怎么调用WebService,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。'获取已初始化Soap对象 Public Function...
    99+
    2023-06-08
  • C#中怎么动态调用Web服务
    本篇文章给大家分享的是有关C#中怎么动态调用Web服务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。(1)首先在Web引用中的本地代理类中添加一个构造函数,这个构造函数是以We...
    99+
    2023-06-17
  • unity怎么调用c++动态库
    要在Unity中调用C++动态库,可以按照以下步骤进行操作:1. 创建C++动态库:首先,使用C++编写你的库,并将其编译为动态库(...
    99+
    2023-09-20
    unity c++
  • java怎么调用c++动态库
    要在Java中调用C++动态库,可以使用JNI(Java Native Interface)技术。以下是通过JNI调用C++动态库的...
    99+
    2023-10-20
    java c++
  • 怎么在Android中调用WebService
    怎么在Android中调用WebService?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。WebService是一种基于SOAP协议的远程调用标准,通过webservic...
    99+
    2023-05-30
    android webservice
  • C#中如何使用HttpPost调用WebService
    这篇文章主要介绍了C#中如何使用HttpPost调用WebService,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。WebService服务端代码public c...
    99+
    2023-06-29
  • C#调用动态库
    一、引言 “为什么我们需要掌握互操作技术的呢?” 对于这个问题的解释就是——掌握了.NET平台下的互操作性技术可以帮助我们在.NET中...
    99+
    2024-04-02
  • C++调用动态库和Python调用C++动态库的方法是什么
    这篇文章主要介绍“C++调用动态库和Python调用C++动态库的方法是什么”,在日常操作中,相信很多人在C++调用动态库和Python调用C++动态库的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-05
  • C#中使用HttpPost调用WebService的方法
    WebService服务端代码 public class WebServiceDemo : System.Web.Services.WebService { ...
    99+
    2024-04-02
  • C++调用动态库两种方式和Python调用C++动态库
    创建动态库动态库是在程序运行时加载的库文件,并不占用程序本身大小。选择动态库项目:新建.h和.cpp文件:# cat.h #pragma once extern "C" _declspec(dllexport) int sum(int a,...
    99+
    2023-05-14
    Python C++ 动态库
  • webservice接口怎么调用
    调用WebService接口有多种方法,下面以Java语言为例进行说明: 使用JAX-WS(Java API for XML We...
    99+
    2024-02-29
    webservice
  • C++ DLL动态库怎么创建与调用
    本篇内容介绍了“C++ DLL动态库怎么创建与调用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、创建库工程2、添加头文件Cla...
    99+
    2023-06-30
  • pb怎么调用webservice接口
    调用WebService接口可以通过以下步骤进行: 导入pbwebservice.pbl库文件:在PowerBuilder中,可...
    99+
    2023-10-28
    pb
  • C#怎么调用C++动态库接口函数和回调函数
    本文小编为大家详细介绍“C#怎么调用C++动态库接口函数和回调函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么调用C++动态库接口函数和回调函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. 前言...
    99+
    2023-06-29
  • Java中WebService怎么调用天气预报
    在Java中调用天气预报的Web服务,可以通过以下步骤实现: 导入相关的库文件:在Java项目中,需要导入相关的库文件,包括SO...
    99+
    2023-10-23
    Java WebService
  • C#调用WebService的方法介绍
    一、前言 在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创...
    99+
    2024-04-02
  • C# WebService如何发布与调用
    这篇文章主要为大家展示了“C# WebService如何发布与调用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C# WebService如何发布与调用”这篇文章吧。Web Service是可操...
    99+
    2023-06-18
  • C# 调用WebService的方式汇总
    C# 调用WebService的方式汇总 方式一:根据提供的webservice地址,用VS自带工具生成cs文件,添加到项目中使用即可。方式二:根据webservice地址,动态在项目中生成代...
    99+
    2023-09-07
    c# 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作