WSS 3.0【开发志】03 初体验:在本机使用Web Services
还记得在开发志01提到如果要进行Remote开发,必须使用Web Services吗?今天就来实践Web Services吧,不过,想说Web Services没写过,还是先从本机开始好了,又瞪了SDK许久,在网络上找了许多文章,想看看怎么样可以做出开发志01的结果,最后,只好将就使用Webs的GetWeb Method来做出今天的主题…因为…看了半天这个比较好懂… Orz
本篇您将学会:
A. 如何引用WSS Web Service
B. 如何使用【对象浏览器】加速与协助开发
C. System.Xml 与System.Net namespace的引用
D. Web_Reference_Folder_Name是什么
E. Web Service的开发、验证、XmlNode与GetWeb Method的使用
A. 引用WSS Web Service
1. 从Files > 建立项目 > 建立一个【Console Application】项目,接着在【References】右键点选【加入Web参考】。
2. 在【URL】处输入Web Service的URL,输入的语法是【 http://主机名称/_vti_bin/webs.asmx 】,
小弟这边是输入 h ttp://wsscht/_vti_bin/webs.asmx
就在这个简单的步骤,小弟又卡了很久,因为SDK的Web Service是写
http://MyServer/[sites/][MySite/][MySubsite/]_vti_bin/Web_Service.asmx ,是小弟会错意吗?
就输入.../Web_Servcies.asmx,想说怎么会发生错误…最后跑到ISAPI/的vtb_bin数据夹下,
看到了所有的.asmx档发现没这个,姑且试试Webs.asmx才成功…
3. 小弟将Webs往下拉,找到GetWeb这个Method点进去看,有看没有懂…
4. 点选【服务描述】,在 "Webs" 描述里面,这个就比较亲切了,至少看得懂GetWeb(webUrl AS string)这一串,透过这样,大概可以了解这个Web Service提供了哪些方法可用,又要如何使用…
5. 最后在【Web参考名称】更名为WssWebService,默认会以主机名称,改不改应该无所谓;更改完毕后点选【加入参考】。
B. 使用【对象浏览器】加速与协助开发
6. 加入完成后,可以看到多了一个【Web References】的数据夹,里面有一个【WssWebService】的参考。
7. 双击WssWebService,可以打开如图左的【对象浏览器】,在对象浏览器中,可以项目使用的namespace,例如System.Web.Services
8. 除此,还可以看到项目名称与项目名称下的namespace,如本项目的Web Service namespace: 【WSSCode_03_PrintSiteViaWebServices.WssWebsService】。
9. 展开PrintSiteViaWebServices.WSSWebsService,看到了所要引用的【Webs】Class并点选,在右边的窗口就会带出Webs这个Class所包含的Method;这边点选Method【GetWeb(string)】,又可以在下方看到这个Method使用的说明…
10. 如果再双击GetWeb(string),可以打开Reference.cs窗口,可以看到更多详细的资讯。所以,透过步骤6到步骤10的这个过程,开发时如果遇到了不知道该使用哪些Class或什么样的Method,以及该如何使用Method等问题时,除了查阅SDK或在网络上搜寻数据外,这种找寻Class或Method的方法,或许可以帮您节省一点时间。好,接下来要来真的了,来完成这支程序吧!
C. System.Xml 与System.Net namespace的引用
11. 要使用GetWeb Method,SDK上写得很清楚:This example requires that a using (Visual C#) or Imports (Visual Basic) directive be included for the System.Xml namespace. 所以我们得先加一个System.Xml namespace。
12. 而在 Talk to SharePoint Through its Web Services 这篇文章中提到:The SharePoint web services only accept calls from existing SharePoint users and do also enforce access security. Import the System.Net namespace into your project and then use the NetworkCredential class to set the user credential to use for the web service call. 所以记得加上System.Net namespace。
D. Web_Reference_Folder_Name是什么
13. 加了System.Xml namespace后,来加程序吧!
SDK上写着声明的方法是这样:Web_Reference_Folder_Name.Webs websService = new Web_Reference_Folder_Name.Webs();
这个Web_Reference_Folder_Name是什么?就是我们所命名的【Web参考名称】,如果点选Web名称,可以在【属性】窗口中,看到【Folder Name】,这就是Web_Reference_Folder_Name了。
E. Web Service的开发、验证、XmlNode与GetWeb Method的使用
14. 输入Web参考名称时,如下图只输入了Wss,Visual C#的IntelliSense…自动帮我们带出【{}WssWebServcie】参考名称,且在后头会提示namespace资讯,当我们要使用的对象被选取到时,只要输入任意键,此对象程序就会直接显示在程序中。
15. 接着输入【Webs】这个Class,同样可以使用IntelliSense…
16. 当进行声明时,Webs这个class显示整个Class对象的…
17. 接下来在第二行进行websService的验证。
18. 在websService的后面,接着打Credentials,这时可以看到Credentials使用的提示,照着SDK的范例直接使用System.Net.CredentialCache.DefaultCredential。
Talk to SharePoint Through its Web Services 所使用的范例是:VersionsService.Credentials = new NetworkCredential(UserName, Password, Domain); 这边记录一下!
19. 完成了验证之后,继续下面的程序啰;由于是使用Console,所以后面有些许跟SDK不一样。
XmlNode myNode = websService.GetWeb("http://wsscht");
Console.WriteLine(
"My site title is : {0}", myNode.Attributes["Title"].Value);
Console.ReadLine();
20. 执行后可以看到网站名称WSS被打印出来了!
21. 对照一下看看有没打印错误…
呼~~~终于完成啰,这篇整理好久,希望看官满意…XD
下一篇来进行Search客制化,使用KeywordQuery关键字查询…
原文:大专栏 WSS 3.0【开发志】03 初体验:在本机使用Web Services