NET动态调用WebService
NET动态调用WebService
这不是一篇教你了解WebService的博文,也不是对WebService的深入理解, 这是一篇教你在开发过程中,如果动态的调用WebService一个方法.
在比较常见的WebService调用,我们一般是选择在项目中,新建添加引用的方式来引用WebService服务. 例如下面的方式 :



下面介绍一种方式用来动态的调用WebService References :


1 public partial class Component1 : Component
2 {
3 public Component1()
4 {
5 InitializeComponent();
6 }
7
8 public Component1(IContainer container)
9 {
10 container .Add(this );
11
12 InitializeComponent();
13 }
14 }



1 [ WebServiceBinding (Namespace = "http://tempuri.org/" )]
2 public class Component1 : SoapHttpClientProtocol
3 {
4 public Component1()
5 {
6 InitializeComponent();
7 }
8
9 public Component1(IContainer container)
10 {
11 container . Add(this );
12
13 InitializeComponent();
14 }
15 }

SoapHttpClientProtocol SoapHttpClientProtocol类可以直接访问指定的webService的指定方法若要与 XML Web services 通信,请为要调用的 XML Web services 创建一个间接或直接从 WebClientProtocol 派生的代理类。 可以不用手动创建代理类,而使用 Web 服务描述语言工具 (Wsdl.exe) 为给定 XML Web services 的服务说明创建代理类。 当为 SOAP 协议生成代理类时,对 XML Web services 方法的同步调用通过 Invoke 方法进行,而异步调用通过BeginInvoke 方法和 EndInvoke 方法进行。
1 <add key="ServiceAddress" value="http://localhost:7340/CourseMakerService.asmx" />
在我们添加的Conponent Class 构造中调用服务器链接地址

1 public Component1( string serviceUrl)
2 {
3 if (serviceUrl. Equals( "UpdateServiceAddress" ))
4 base .Url = ConfigurationManager . AppSettings["UpdateServiceAddress" ];
5 else
6 base .Url = ConfigurationManager . AppSettings["ServiceAddress" ];
7 }

然后当我们想要调用WebService中的方法时,只需要在Component1类中写. 如果我的调用方式

1 [ WebServiceBinding(Namespace = "http://tempuri.org/" )]
2 public class OffLineLearingClient : SoapHttpClientProtocol
3 {
4 public OffLineLearingClient( string serviceUrl)
5 {
6 if (serviceUrl. Equals( "UpdateServiceAddress" ))
7 base .Url = ConfigurationManager . AppSettings["UpdateServiceAddress" ];
8 else
9 base .Url = ConfigurationManager . AppSettings["ServiceAddress" ];
10 }
11 public OffLineLearingClient()
12 {
13 base .Url = ConfigurationManager . AppSettings["ServiceAddress" ];
14 }
15 [ SoapDocumentMethod ]
16 public YHBJUser GetUser( YHBJUser user)
17 {
18 return base . Invoke("GetUser" , new object [] { user })[0 ] as YHBJUser ;
19 }
20
21 [ SoapDocumentMethod ]
22 public List < YHBJClass> GetTrainings11( string userId)
23 {
24 return base . Invoke("GetTrainings11" , new object [] { userId })[0 ] as List <YHBJClass > ;
25 }

这样我们就可以动态的实现如果调用WebService了.
NET动态调用WebService的更多相关文章
- Atitit 动态调用webservice与客户端代理方式调用
Atitit 动态调用webservice与客户端代理方式调用 方式1: 使用call.invoke 直接调用WSDL,缺点:麻烦,不推荐--特别是JAVA调用.NET的WS时,会有不少的问题需要解 ...
- 动态调用WebService(C#) (非常实用)
通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...
- 动态调用webservice(部分转载)
动态调用webservice,做个笔记: public class WSHelper { /// < summary> /// 动态调用web服务 /// < /summary> ...
- C# 动态调用webservice
最近项目中,用到动态调用webservice的内容,此处记录下来,留着以后COPY(我们只需要在XML,config文件,或者数据库中配置webservice连接地址和方法名即可使用): using ...
- 动态调用webservice及WCF服务
动态调用web服务,该方法只针对Web service, WCF的服务不行,如果是WCF的就通过工具直接生产代理类,把代理类配置到调用的项目中,通过配置客户端的终结点动态的取实现: 通过Svcutil ...
- C# .NET 动态调用webservice的三种方式
转载自 百度文库 http://wenku.baidu.com/link?url=Q2q50wohf5W6UX44zqotXFEe_XOMaib4UtI3BigaNwipOHKNETloMF4ax4W ...
- WebService – 2.动态调用WebService
在本节课程中,将演示如何通过程序动态添加.调用.编译.执行WebService并返回结果. WebService动态调用示意图 WebService相关知识 代码文档对象模型CodeDom的使用 编程 ...
- 用C#通过反射实现动态调用WebService 告别Web引用
我们都知道,调用WebService可以在工程中对WebService地址进行WEB引用,但是这确实很不方便.我想能够利用配置文件灵活调用WebService.如何实现呢? 用C#通过反射实现动态调用 ...
- 动态调用Webservice 支持Soapheader身份验证(转)
封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...
- [转]Net 下采用GET/POST/SOAP方式动态调用WebService C#实现
本文转自:http://www.cnblogs.com/splendidme/archive/2011/10/05/2199501.html 一直以来,我们都为动态调用WebService方法而烦恼. ...
随机推荐
- Linux平台下裸设备的绑定:
Linux平台下裸设备的绑定: 运用RAW绑定 方法一 raw的配置(1) [root@qs-dmm-rh2 mapper]# cat /etc/rc.local #!/bin/sh # # This ...
- Hosting WCF Service
之前在博客几个实例DemoWCF服务寄宿到控制到应用程序中,这篇来总结一下,经常使用的几种宿主的方式. 1.Self-Hosting 一个WCF服务可以寄宿在控制台应用程序或者WinForms app ...
- Alamofire网络库基础教程
原文 Beginning Alamofire Tutorial 原文作者 Essan Parto译者 星夜暮晨(QQ:412027805) http://www.jianshu.com/p/f1208 ...
- [Java][Android][Process] 分享 Process 运行命令行封装类型
我在以前的文章中提到,使用Java不会有一个问题,创建运行命令来创建太多进程后创建进程行语句. [Android] ProcessBuilder与Runtime.getRuntime().exec分别 ...
- POJ 3009-Curling 2.0(DFS)
Curling 2.0 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12158 Accepted: 5125 Desc ...
- Mac OS X 在捕捉AppLAN通信包
Mac OS X 在捕捉AppLAN通信包 一.拍摄模式 由于工作关系.经常要分析App wifi通讯协议.我的开发电脑是Mac Book. 大体有例如以下几种模式: + App与server进行ht ...
- struts2和struts1认识
1.Struts 2基本流程 Struts 2框架本身可以大致分3部分:核心控制器FilterDispatcher.业务总监Action与用户实现企业业务逻辑组件. 核心控制器FilterDispat ...
- 采用 matlab 阅读SAR 元数据
这方面能够參考书籍:"Digital processing of synthetic aperture radar data", by Ian Cumming and Frank ...
- IOS总结_IOS经常使用的方法集合、调用系统电话、设备区分、APP内永不锁屏
调用系统打电话的功能 打电话功能仅仅有iPhone支持,对于其它设备相应button应该禁用. //直接调用系统电话呼叫功能,挂断电话后不能回到应用程序 [UIApplication sharedAp ...
- java安全性语言
java通过所谓的沙箱安全模型保证了其安全性,以下我们就来看看java提供的安全沙箱机制. 组成沙箱的基本组件例如以下: 1.类装载器结构: 2.class文件检验器: 3.内置于java虚拟机(及语 ...