最近时间太少了,马上要走了,这篇文章就算是结尾吧,可能说明会少些,代码多些.
接上篇文章,我们先简单说明下绑定函数.首先实例化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就可以了.
到这里,我们的例子基本也就介绍完了,由于个人的原因,最后一篇可能写的比较仓促,非常惭愧.
不知道写这么多,对学习中的朋友会不会有帮助,里面的东西,很多也算是个人理解,如果出错,还请各位海涵:)
以后可能上网的时间会很少,要考研了,如果你有什么需要帮助的或是疑惑的地方,可以wiseman.net@gmail.com联系我,如果上网的话,一定会回的.
