我现在需要动态调用WebService接口,因为别人给我的接口名称都是(域名 +/webservice/Area.asmx/GetData
),接口名称都是不一样的,而我需要根据每个域名获取xml信息,网上找了动态调用的代码。但好像是web程序的。因为其中有一个类是ServiceDescription,需要添加using System.Web.Services.Description; 命名空间,winfrom中时没有的。请问高手在winform中怎么动态调用WebService。

解决方案 »

  1.   

    http://topic.csdn.net/u/20090220/10/08c8ca6f-3733-40ff-840e-d6ca6894ab35.html
      

  2.   

    如果你是通过 Web 引用的方式的话 动态设置如下WinForm 作则Web引用右键有一个属性,可以设置静态还是动态。
    然后会生成一段XML 在 app.config中 ,在里面改好地址就可以了。
    如果在程序启动的时候,想叫更改地址生效,可以用 cofigrationManager.RerashSection(string section)方法。用太进行强制刷新。Windows phone 中 如果用到 需要对 自动生成的代理类中的 构造函数的 this.Url进行 切入点赋值。
    但是前提也一定是 动态的。你可以吧地址放在一个可以配置的地方。自动生成的代理类在引用的 结构中 ,以树的形式隐藏,3个XML 架构 和 cs 类。
      

  3.   

    winform中也可以添加System.Web.Services引用的。 C#不添加引用,动态调用webservice你也可以用HttpWebRequest发送请求的方式去调用。
      

  4.   

    试下这个吧
    http://blog.csdn.net/mybvc/article/details/7308761
      

  5.   

    如果你调用的 是 JAVA 的 确定不是 struct 的架构的那你要 也没有 SOAPAction 的 不能用 HttpWebRequest 和 HttpWebResponse如果是 封装的 例如 .do 或 .action 或是 c# 的 .ascx 的你可以直接用 
    HttpWebRequest 和 HttpWebResponse
      

  6.   

    带式前提,你一定要 添加 ,System.Web.Services 这个DLL,少了它可是不行的, 
      

  7.   

    在项目中。
    1.右击引用-添加服务引用。把WebService的地址写上:xxxxx.asmx
    2.命名空间默认是ServiceReference1,在代码中写
    ServiceReference1.Test01 test=new  ServiceReference1.Test01 (); 
    Test01这个是webservice中的类。   看下那个webservice的wsdl来知道如何调用其中的类。在WebService地址后面加上?wsdl就能看到
      

  8.   

    用了2楼的方法,但是有一个类 ServiceDescriptionImporter 就是找不到命名空间 添加引用了System.Web.Services.Description 但还是说缺少程序集引用 这是为什么啊