zoukankan      html  css  js  c++  java
  • Xml WebService完全实例解析(四)

      接上篇文章,我们先简单说明下绑定函数.首先实例化ServiceA,这个和一般类的实例化并没有不同..接下来用xmlNode1来接受函数的返回值, 接下来是构造xml,并将其转化为dataset,这是通用的方法,如果是刚接触不久的朋友,最好能记下这种方法.

          接下来给出异步调用两个服务的代码

    //绑定数据
      public void BindData()
      {
       IAsyncResult ar1;
       IAsyncResult ar2;
       serviceA=new SiteA.Service1();
       serviceB=new SiteB.Service1();
       DataSet ds=new DataSet();
       XmlNode xmlNode1,xmlNode2;
       XmlDataDocument xd=new XmlDataDocument();
       StringBuilder xmlString1,xmlString2;
       //--简单的异步调用
       ar1=serviceA.BeginGetSiteAData(strSearch,null,null);
       ar2=serviceB.BeginGetSiteAData(strSearch,null,null);
       xmlNode1=serviceA.EndGetSiteAData(ar1);
       xmlNode2=serviceB.EndGetSiteAData(ar2);
       //----------
       if(xmlNode1==null&&xmlNode2==null) //--存储过程执行失败
        return;

       xmlString1=new StringBuilder(xmlNode1.OuterXml);
       xmlString2=new StringBuilder(xmlNode2.OuterXml);
       xmlString1=MakeNewXmlString(xmlString1,xmlString2);  //生成新的xml
       if(xmlString1.ToString().Equals("<NewDataSet xmlns=\"\"></NewDataSet>"))
        return ;
       xd.LoadXml(xmlString1.ToString());
       ds.ReadXml(new XmlNodeReader(xd));
       DataGrid1.DataSource=ds.Tables["list"].DefaultView;
       DataGrid1.DataBind();
      }

      //生成新XML
      public StringBuilder MakeNewXmlString(StringBuilder str1,StringBuilder str2)
      {
       str1=str1.Replace("</NewDataSet>","");
       str2=str2.Replace("<NewDataSet xmlns=\"\">","");
       str1.Append(str2.ToString());
       return str1;
      }

        这有两个需要注意的地方,一个是xml构造,还有就是异步调用的实现,请读者,自己理解

        下面讲下通过dll来引用webservice的方法,我只把流程介绍下.

        首先,在ie输入服务的地址,如:http://www.xxx.com/service.asmx

       然后写输入http://www.xxx.com/service.asmx?wsdl

       打开后,另存为xxx.wsdl

       然后用vs的命令提示符来编译:wsdl /namespace:SiteA ServiceA.wsdl

      生成名字空间为sitea的代理类

      最后csc /out:ServiceA.dll /t:library Service1.cs ,其中service1.cs为代理类文件

     最后引用dll就可以了.

  • 相关阅读:
    Software Architecture软件架构(方法、模式与框架)纵横谈
    SOLID: OOP的五大原则(译)
    《第一行代码》14章cool weather酷欧天气 网络请求相关问题
    前后端数据交互利器--Protobuf
    树状数组基础
    endless 如何实现不停机重启 Go 程序?
    fasthttp:比net/http快十倍的Go框架(server 篇)
    Mysql MVCC机制
    Docker构建mysql主从
    浅析b站2021/7/13日晚服务崩溃问题
  • 原文地址:https://www.cnblogs.com/xie/p/1708954.html
Copyright © 2011-2022 走看看