CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > WebService领域

XML WebService完全实例详细解析

作者: Yiay,  出处:中国IT实验室, 责任编辑: 包春林, 
2008-04-10 05:00
  webservice传递的数据只能是序列化的数据,典型的就是xml数据,这里我们也只讨论xml数据的传输.

        此段代码给出了xml转化成dataset的解决方案,虽然这不是必须的,但毕竟在asp.net里,dataset占的作用之重,谁都知道的.其他的请 朋友们先看(呵呵,个中高手就免了),在下篇文章中将会有对它的一些解释与及多服务分布调用的解决方案,写了三篇了,发现似乎还是有些朋友看的,那我就献 丑继续写下去好了,大家有什么意见也希望提出,在下的理解存在偏驳也再所难免,希望谅解:)

  接上篇文章,我们先简单说明下绑定函数.首先实例化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(""))

  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("","");

  str2=str2.Replace("","");

  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就可以了.

共4页。 9 1 2 3 4

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | About us | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2009, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i