函數功能很簡單,只是要返回查詢結果,其資料格式是XmlDataDocument.當查詢失敗時(無匹配查詢結果),我們構造一個xml,返回一個空記錄.否則,我們把查詢後的dataset產生一個XmlDataDocument,接下來,由於該項目的需要,我加入了一個迴圈,添加dataset裡所沒有的節點,網站名稱.在這之後,算是完成了一個符合我們期望格式的xml資料文檔,我們把它返回.
好了,webservice的方法函數介紹完了(這裡還有個web服務方法,稍後介紹),接下來我們的任務是怎麼調用它了.首先把webservice的項目編譯完成,假定我們這個服務是針對資來源站點點A的,我們不妨稱其為ServiceA.先單獨運行asmx檔案,執行GetSiteAData(string AssignName)方法,將提示你輸入參數,你輸入要搜尋的內容,點確認,將返回給你一個xml資料,並在ie上顯示出來,這就是你搜尋到的內容拉.
這裡對ServiceA的工作再做點介紹,在我們這個項目裡,它是資來源站點點A提供的服務,意思是,它查詢的資料將全來源於網站A,而網站A資源添加在本項目也有專門的工程實現.
好了,回到正題.這裡我介紹vs調用webservice的方法,其實其他平台的調用方法也是大同小異.首先我們介紹web引用方式,這種方式我強烈建議調試時使用,非常方便.右擊引用,點添加web引用,輸入你的webservice地址,如:http://localhost/aspxproject/WebServiceSolution/SiteBService/service1.asmx,你必須保證你輸入的webservice存在.然後引用即可,注意:web引用名將作為你加入的webservice的名字空間.比如你輸入了:SiteA,那服務的執行個體化將是這樣:SiteA.Service1 serviceA=new SiteA.Service1();(Service1是服務的類名).
完成了這一步,service的調用似乎變的那麼簡單,我們已經實現了遠程執行個體化,接下來的遠程調用也是一樣的容易.下面給出資源採集站ServiceGatherSite的綁定代碼(只採集A網站的資訊)
//綁定資料
public void BindData()
{
serviceA=new SiteA.Service1();
DataSet ds=new DataSet();
XmlNode xmlNode1;
XmlDataDocument xd=new XmlDataDocument();
StringBuilder xmlString1;
xmlNode1=serviceA.GetSiteAData(strSearch);
if(xmlNode1==null) //--預存程序執行失敗
return;
xmlString1=new StringBuilder(xmlNode1.OuterXml);
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轉化成dataset的解決方案,雖然這不是必須的,但畢竟在asp.net裡,dataset占的作用之重,誰都知道的.其他的請朋友們先看(呵呵,個別中高手就免了),在下篇文章中將會有對它的一些解釋與及多服務分布調用的解決方案,寫了三篇了,發現似乎還是有些朋友看的,那我就獻醜繼續寫下去好了,大家有什麼意見也希望提出,在下的理解存在偏駁也再所難免,希望諒解:)
From: IT實驗室