.NET动态调用WebService
2015-05-29 13:36
323 查看
这不是一篇教你了解WebService的博文,也不是对WebService的深入理解, 这是一篇教你在开发过程中,如果动态的调用WebService一个方法.
2 : 输入引用服务器的地址
然后我们的程序集下就会多出刚才新建的Service 引用相关的文件引用.
然后我们就可以直接在代码中调用ServiceReference1 , 就可以了,在这里就不在继续的详细做解释说明了,我们还是回到主题,如何减去这些步骤,因为这样的方式添加引用,1 : 不好扩展, 2 : 比较繁琐
然后我们修改Component类本部.
我们添加完成之后,Component类内部默认为:
[align=left]在此我们需要做一些修改.[/align]
[align=left]首先在项目中添加WebService的引用.[/align]
[align=left] [/align]
[align=left]然后将Component类 继承自 SoapHttpClientProtocol[/align]
[align=left]至此将Component类改为 :[/align]
[align=left]SoapHttpClientProtocol SoapHttpClientProtocol类可以直接访问指定的webService的指定方法 [/align]
[align=left]若要与 XML Web services 通信,请为要调用的 XML Web services 创建一个间接或直接从 WebClientProtocol 派生的代理类。 可以不用手动创建代理类,而使用 Web 服务描述语言工具 (Wsdl.exe) 为给定 XML Web services 的服务说明创建代理类。 当为 SOAP 协议生成代理类时,对 XML Web services 方法的同步调用通过 Invoke 方法进行,而异步调用通过BeginInvoke 方法和 EndInvoke 方法进行。[/align]
[align=left]然后在配置文件中写入我们所要引用的服务器链接地址 :[/align]
在我们添加的Conponent Class 构造中调用服务器链接地址
然后当我们想要调用WebService中的方法时,只需要在Component1类中写. 如果我的调用方式
这样我们就可以动态的实现如果调用WebService了.
[align=left] [/align]
在比较常见的WebService调用,我们一般是选择在项目中,新建添加引用的方式来引用WebService服务. 例如下面的方式 :
1 : 在项目中新建添加服务引用2 : 输入引用服务器的地址
然后我们的程序集下就会多出刚才新建的Service 引用相关的文件引用.
然后我们就可以直接在代码中调用ServiceReference1 , 就可以了,在这里就不在继续的详细做解释说明了,我们还是回到主题,如何减去这些步骤,因为这样的方式添加引用,1 : 不好扩展, 2 : 比较繁琐
下面介绍一种方式用来动态的调用WebService References :
一 : 在项目中右键选择新建然后我们修改Component类本部.
我们添加完成之后,Component类内部默认为:
public partial class Component1 : Component { public Component1() { InitializeComponent(); } public Component1(IContainer container) { container .Add(this ); InitializeComponent(); } }
[align=left]在此我们需要做一些修改.[/align]
[align=left]首先在项目中添加WebService的引用.[/align]
[align=left] [/align]
[align=left]然后将Component类 继承自 SoapHttpClientProtocol[/align]
[align=left]至此将Component类改为 :[/align]
[ WebServiceBinding (Namespace = "http://tempuri.org/" )] public class Component1 : SoapHttpClientProtocol { public Component1() { InitializeComponent(); } public Component1(IContainer container) { container . Add(this ); InitializeComponent(); } }
[align=left]SoapHttpClientProtocol SoapHttpClientProtocol类可以直接访问指定的webService的指定方法 [/align]
[align=left]若要与 XML Web services 通信,请为要调用的 XML Web services 创建一个间接或直接从 WebClientProtocol 派生的代理类。 可以不用手动创建代理类,而使用 Web 服务描述语言工具 (Wsdl.exe) 为给定 XML Web services 的服务说明创建代理类。 当为 SOAP 协议生成代理类时,对 XML Web services 方法的同步调用通过 Invoke 方法进行,而异步调用通过BeginInvoke 方法和 EndInvoke 方法进行。[/align]
[align=left]然后在配置文件中写入我们所要引用的服务器链接地址 :[/align]
<add key="ServiceAddress" value="http://localhost:7340/CourseMakerService.asmx" />
在我们添加的Conponent Class 构造中调用服务器链接地址
public Component1( string serviceUrl) { if (serviceUrl. Equals( "UpdateServiceAddress" )) base .Url = ConfigurationManager . AppSettings["UpdateServiceAddress" ]; else base .Url = ConfigurationManager . AppSettings["ServiceAddress" ]; }
然后当我们想要调用WebService中的方法时,只需要在Component1类中写. 如果我的调用方式
[ WebServiceBinding(Namespace = "http://tempuri.org/" )] public class OffLineLearingClient : SoapHttpClientProtocol { public OffLineLearingClient( string serviceUrl) { if (serviceUrl. Equals( "UpdateServiceAddress" )) base .Url = ConfigurationManager . AppSettings["UpdateServiceAddress" ]; else base .Url = ConfigurationManager . AppSettings["ServiceAddress" ]; } public OffLineLearingClient() { base .Url = ConfigurationManager . AppSettings["ServiceAddress" ]; } [ SoapDocumentMethod ] public YHBJUser GetUser( YHBJUser user) { return base . Invoke("GetUser" , new object [] { user })[0 ] as YHBJUser ; } [ SoapDocumentMethod ] public List < YHBJClass> GetTrainings11( string userId) { return base . Invoke("GetTrainings11" , new object [] { userId })[0 ] as List <YHBJClass > ; }
这样我们就可以动态的实现如果调用WebService了.
[align=left] [/align]
相关文章推荐
- Makefile 中:= ?= += =的区别
- java基础整理のstatic关键字
- TThreadedSelectorServer介绍及Direct Memory OOM分析
- iOS使用UITableView从plist中选择省市区
- SQLite的简介
- Linux 玩法
- SharePoint 2013 地址栏_layouts/15/start.aspx#
- IOS开发中的几种设计模式介绍
- android 获取网络图片
- 使用JQuery.validate后的bootstrap风格校验提示
- PAT 1017. Queueing at Bank
- Spring 访问各种数据库的配置
- oralce初始化
- 关于手机号正则表达式
- 阅读第8,9,10 章
- jquery方式的ajax方法失效,在火狐里边调试显示$.ajax为undefined
- 第十三周阅读项目(6):链表类 .
- 第12周-程序阅读-多态性与抽象类-纯虚函数
- 百度地图定位
- Zend Framework