SharePoint的WebService的应用

SharePoint自带了WebService,通常情况下是跨服务器的访问,因为同一服务器上不同网站可以简单的通过提升权限代码就可以访问数据。

以跨服务器读取某个list为例,对项目添加“http://<server-url>/_vti_bin/Lists.asmx”和“http://<server-url>/_vti_bin/SiteData.asmx”的引用。

对两个引用的命名分别为ListService和SiteDataService

//访问列表库,通过CAML查询返回的是一个XML文件,不需要解析直接给DataSet类型赋值

 public static DataSet GetItems()

        {
            ListService.Lists listsWS = new ListService.Lists();
            //listsWS.Credentials = System.Net.CredentialCache.DefaultCredentials; //该句在编译环境可以代替下一句,但是跨服务器应用肯定要用下一句
            listsWS.Credentials = new NetworkCredential(用户名, 密码, 域名);
            XmlDocument doc = new System.Xml.XmlDocument();
            doc.LoadXml("<Document><Query><Where>CAML</Where></Query><ViewFields /><QueryOptions /></Document>");
            XmlNode listQuery = doc.SelectSingleNode("//Query");
            XmlNode listViewFields = doc.SelectSingleNode("//ViewFields");
            XmlNode listQueryOptions = doc.SelectSingleNode("//QueryOptions");

            Guid g = GetWebID();
           
            XmlNode items = listsWS.GetListItems("ListName", string.Empty, listQuery, listViewFields, string.Empty, listQueryOptions, g.ToString());

            NameTable nt = new System.Xml.NameTable();
            XmlNamespaceManager nsMgr = new XmlNamespaceManager(nt);
            nsMgr.AddNamespace("w", "http://schemas.microsoft.com/office/word/2003/2/wordml");
            XmlNode y = items.SelectSingleNode("*", nsMgr);
            DataSet ds = new DataSet();
            if (y != null)
            {
                XmlReader xmlReader = new XmlTextReader(y.InnerXml, XmlNodeType.Element, null);
                ds.ReadXml(xmlReader);
            }
            return ds;
        }

        private static Guid GetWebID()
        {
            SiteDataService.SiteData siteDataWS = new sinopecSiteData.SiteData();
            siteDataWS.Credentials = new NetworkCredential(用户名, 密码, 域名);
            SiteDataService._sWebMetadata webMetaData;
            SiteDataService._sWebWithTime[] arrWebWithTime;
            SiteDataService._sListWithTime[] arrListWithTime;
            SiteDataService._sFPUrl[] arrUrls;
            string roles; string[] roleUsers; string[] roleGroups;     
            uint i = siteDataWS.GetWeb(out webMetaData, out arrWebWithTime, out arrListWithTime, out arrUrls, out roles, out roleUsers, out roleGroups);
            Guid g = new Guid(webMetaData.WebID);
            return g;

        }

 以上代码要特别注意两点:

1。身份验证。对web引用可以直接在webconfig里面直接修改地址,相应的修改代码中的验证登录信息就可以,建议都弄到配置文件里,方便统一维护。

2。解析XML。

 

以下是引用的service对应的映射列表

WSS Web ServicesWeb Reference
Administration Servicehttp://<server-url:port-number>/_vti_adm/admin.asmx
Alerts Servicehttp://<server-url>/_vti_bin/alerts.asmx
Document Workspace Servicehttp://<server-url>/_vti_bin/dws.asmx
Forms Servicehttp://<server-url>/_vti_bin/forms.asmx
Imaging Servicehttp://<server-url>/_vti_bin/imaging.asmx
List Data Retrieval Servicehttp://<server-url>/_vti_bin/dspsts.asmx
Lists Servicehttp://<server-url>/_vti_bin/lists.asmx
Meetings Servicehttp://<server-url>/_vti_bin/meetings.asmx
Permissions Servicehttp://<server-url>/_vti_bin/permissions.asmx
Site Data Servicehttp://<server-url>/_vti_bin/sitedata.asmx
Site Servicehttp://<server-url>/_vti_bin/sites.asmx
Users and Groups Servicehttp://<server-url>/_vti_bin/usergroup.asmx
Versions Servicehttp://<server-url>/_vti_bin/versions.asmx
Views Servicehttp://<server-url>/_vti_bin/views.asmx
Web Part Pages Servicehttp://<server-url>/_vti_bin/webpartpages.asmx
Webs Servicehttp://<server-url>/_vti_bin/webs.asmx

 

 

转载于:https://www.cnblogs.com/Hary/archive/2009/02/04/1383933.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值