微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice实例(三)

 
webservice 实例 ( )
qq 群: 19877329
By: jfan 2007-07-23
接上篇文章 , 我们先简单说明下绑定函数 . 首先实例化 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);
 
   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[0].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
打开后 , 另存为 xxx.wsdl
然后用 vs 的命令提示符来编译 :wsdl /namespace:SiteA ServiceA.ws
生成名字空间为 sitea 的代理类
最后 csc /out:ServiceA.dll /t:library Service1.cs, 其中 service1.cs 为代理类文件
最后引用 dll 就可以了。
 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐