net动态调用网络服务

  

这不是一篇教你了解WebService的博文,也不是对网络服务的深入理解,这是一篇教你在开发过程中,如果动态的调用WebService一个方法。

<>强在比较常见的WebService调用,我们一般是选择在项目中,新建添加引用的方式来引用WebService服务。例如下面的方式,:,

1:在项目中新建添加服务引用

,

。网动态调用WebService

2:输入引用服务器的地址

。网动态调用WebService

然后我们的程序集下就会多出刚才新建的服务引用相关的文件引用。

。净动态调用WebService

然后我们就可以直接在代码中调用ServiceReference1,就可以了,在这里就不在继续的详细做解释说明了,我们还是回到主题,如何减去这些步骤,因为这样的方式添加引用,1:不好扩展,2:比较繁琐,

<强>下面介绍一种方式用来动态的调用WebService引用:

一:在项目中右键选择新建

 . NET动态调”用WebService> </p> <p>然后我们修改组件类本部。</p> <p>我们添加完成之后,组件类内部默认为:</p> <pre类=八?c#;工具栏:false”>,, public  partial  class  Component1 :组件
  ,,,{
  ,,,,,,,public  Component1 ()
  ,,,,,,,{
  ,,,,,,,,,,,InitializeComponent ();
  ,,,,,,,}
  ,,,,,,,public  Component1 (IContainer 容器)
  ,,,,,,,{
  ,,,,,,,,,,,container 阀门(却;能够);
  ,,,,,,,,,,,InitializeComponent ();
  ,,,,,,,}
  ,,,}</pre> <p> <br/> </p> <p> </p> <p> </p> <p> </p> <p>, </p> <p>然后将组件类继承自,SoapHttpClientProtocol </p> <p>至此将组件类改为:</p> <pre类=八?c#;工具栏:false”>, (, WebServiceBinding  (=Namespace “http://tempuri.org/?))
  ,,,public  partial  class  Component1 : SoapHttpClientProtocol
  ,,,{
  ,,,,,,,public  Component1 ()
  ,,,,,,,{
  ,,,,,,,,,,,InitializeComponent ();
  ,,,,,,,}
  ,,,,,,,public  Component1 (IContainer 容器)
  ,,,,,,,{
  ,,,,,,,,,,,container 只添加(却;能够);
  ,,,,,,,,,,,InitializeComponent ();
  ,,,,,,,}
  ,,,}</pre> <blockquote> <p> SoapHttpClientProtocol类可以直接访问指定的webService的指定方法,</p> <p>若要与XML Web服务通信,请为要调用的XML Web服务创建一个间接或直接从,WebClientProtocol 派生的代理类只可以不用手动创建代理类,而使用Web服务描述语言工具(Wsdl.exe)为给定XML Web服务的服务说明创建代理类只当为SOAP协议生成代理类时,对XML Web服务方法的同步调用通过,Invoke 方法进行,而异步调用通过BeginInvoke 方法和,EndInvoke 方法进行。</p> </引用> <p> <强>然后在配置文件中写入我们所要引用的服务器链接地址:</强> </p> <pre> & lt; add 关键=癝erviceAddress”, value=

在我们添加类的结果构造中调用服务器链接地址

,, public  Component1 (serviceUrl, string )   ,,,,,,,{   ,,,,,,,,,,,if  (serviceUrl只=(,“UpdateServiceAddress”))   ,,,,,,,,,,,,,,,base  .Url =, ConfigurationManager 只AppSettings (“UpdateServiceAddress”,);   ,,,,,,,,,,,   ,,,,,,,,,,,,,,,base  .Url =, ConfigurationManager 只AppSettings (“ServiceAddress”,);   ,,,,,,,}


Component1类中写只

如我的调用方式:,

[, WebServiceBinding (=Namespace “http://tempuri.org/?))   ,,,public  class  OffLineLearingClient : SoapHttpClientProtocol   ,,,{   ,,,,,,,public  OffLineLearingClient (serviceUrl, string )   ,,,,,,,{   ,,,,,,,,,,,if  (serviceUrl只=(,“UpdateServiceAddress”))   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

net动态调用网络服务