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方法而烦恼. ...
随机推荐
- Android运用自己的标题栏
Android程序的标题栏TitleBar区域很单调,如果想个性化一些可以通过下面的方法来为自己软件的标题定制一个layout布局文件,比如浏览器的标题栏,它包含了网站的Favicon,自定义的进度条 ...
- Spring的文件上传
Spring在发现包括multipart的请求后,会使用MultipartResolver的实现bean处理文件上传操作,现有採用Servlet3的 org.springframework.web.m ...
- Cocos2d-x场景变化相关功能介绍
现场由导演级交换机Director实现.之间的相关的功能,如下面: runWithScene(Scene* scene).该函数能够执行场景.仅仅能在启动第一个场景时候调用该函数.假设已经有一个场景执 ...
- oracle db于,一个特定的数据字典pct miss其计算公式
这篇文章是原创文章,转载请注明出处: http://blog.csdn.net/msdnchina/article/details/38766801 本文提到的数据字典.以dc_histogram_d ...
- ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl
原文:ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经 ...
- 终结者单身——setAccessible(true)
首先看一下"传说"Singleton模式 package go.derek; public class Singleton{ public static int times; pr ...
- 交互式命令 expect
shell尽管很强大.但是貌似无法完成交互式命令的操作,实例 ssh host 如果host而且该机没有加入信任.手动输入的时间需要password. 这样的情况下可以使用expect支持. 下面举个 ...
- WP8关于对地图开发的改进
原文:WP8关于对地图开发的改进 微软在2012年6月21日 发布了 Windows Phone 8的更新.带来大量的功能更新和全新的SDK.作为重头戏的部分是引入了 C++ 和 DirectX,支持 ...
- 佛祖保佑,从来没有Bug
<span style="font-size:14px;">// _ooOoo_ // o8888888o // 88" . "88 // (| - ...
- 简单的方法来改善手机3G上网速度(2G转3G)
这里提到的方法是将手机信号不好的地方(也就是2G信号)强制转换为3G信号上网以至于提高上网速度,大家常常看到在某个地方(比方坐地铁)手机明明是3G卡,却显示的是2G信号,这就是手机老在2 ...