Before of version sharePoint 365
强烈建议参考:Site Data WebService Site ,由于实际业务需求,我这边只会操作 [涉及常用网站内容讯息-ms-sitedats](MS-SITEDATS]: Message Processing Events and Sequencing Rules | Microsoft Docs)
零、基础讯息
下属讯息为拟造讯息
基础SharePoint地址(baseUrl): http://coffeeandice
二级站点(sec-site): test
用户讯息(user-msg): ringo
基础主页创建的文件夹: test1、test2
二级站点创建的文件夹: demo1、demo2
一、获取文档流程
整体的目标是为了获取已授权的网站下的文档内容,同时提供下载的方案。
1、获取次级网站内容
利用
SiteData#GetWeb
获取次级网站内容
_sWebMetadata
主要获取当前输入地址的内容,用作参考。
ArrayOf_sWebWithTime
主要获取次级已授权的内容。通常是为了获取已授权的网站内容
例如:
1、输入网站:
http://coffeeandice
2、响应:
_sWebMetadata :关于http://coffeeandice 内容讯息
ArrayOf_sWebWithTime: 展示子页面url —— http://coffeeandice/test
2、获取特定网站文档列表
利用
SiteData#getListCollection
获取网站的目录讯息通常是获取资源列表
例如:
1、输入网站
http://coffeeandice
2、响应
_sList: 通常我们只需需要筛选baseType 为 DocumentLibrary 即可。
test1、test2
3、额外:
这里通常为中文会出现title不匹配问题,其实我们只需要过滤出 DefaultViewUrl含有AllItems.aspx的字符内容即可。
3.1、需要排除的元素
SitePages、SiteAssets、Style Library、Shared Documents(这个手动添加)
3.2、需要必带的手动元素
Shared Documents ,这个元素为每个网站必带的默认文件列表
3、获取特定网站特定文档列表目录及文件内容
利用
SiteData#enumerateFolder
获取特定列表目录及其文件内容通常是获取文件夹和文件
例如:
1、输入网站
http://coffeeandice
2、输入列表
test
3、响应
prop value
(1) url test/Forms
isFolder true
(2) url test/test.txt
isFolder false
4、下载特定内容
这里涉及version 和 copy 的端点内容。
4.1、获取文件版本讯息
利用
Versions#getVersions
获取特定文件的版本讯息内容
例如:
1、输入内容
http://coffeeandice
2、输入内容
http://coffeeandice/test/demo1/demo.txt
3、响应内容
一个可解析的xml结构,我们可以从中提取出当前版本的内容,一般只取第一个版本
最后获取节点的url属性: http://coffeeandice/test/demo1/demo.txt
4.2、获取文件
利用Copys#GetItem 获取特定文档字节流内容
例如:
1、输入内容
http://coffeeandice
2、输入内容
http://coffeeandice/test/demo1/demo.txt
3、响应内容
获取Holder<bytes> 转换为文件即可。
二、About SiteData(wsdl)
整体上就是关于网站内容部分的web service 端点
0、初始化讯息
wsdl:init SiteDataSoap
full wsdl : full WSDL
1、获取Web讯息 (GetWeb)
GetWeb操作用于获取有关上下文站点的元数据信息、所有子站点的信息、列表和角色定义。
通常我们只需要提取_sWebMetadata
结构内的内容即可,这里包含着我们需要的已授权站点信息,通常与我们传递的上下文讯息有关。
eg:例如入口的 url的 baseUrl,可以获取到 sec-site :http://coffeeandice/test
2、获取Web内上下文讯息(GetListCollection)
返回有关上下文网站的所有列表的常规信息。
通常我们只需要提取 vLists
类型为ArrayOf_sList
结构的内容即可
3、获取列表讯息(GetList)
返回给定列表的常规信息、字段架构和访问权限。
通常我们只需要提取 _sListMetadata 即可,用于获取到列表的内容讯息。 值得注意的是需要输入的是列表的名称,否则会报错。
4、获取上下文内的文件夹内容(enumerateFolder)
返回有关指定文件夹的直接子文件夹、文档和页面的信息。
三、About Versions(wsdl)
整体上就是关于文件版本内容的web service 端点
0、初始化讯息
wsdl:init VersionSoap
虽然初始化已经显示为None,但是实际上为
The protocol server endpoint is formed by appending "/_vti_bin/version.asmx" to the URL of the site, for example, http://www.contoso.com/Repository/_vti_bin/Versions.asmx.
full wsdl: full WSDL
1、获取文件版本讯息(getVersions)
获取输入上下文的文件名称,返回版本讯息以作其他用途,通常若为修改多次的版本,会存在多个版本号
通常我们只需要提取 result 标签即可,用于获取到列表的节点内容讯息。 值得注意的是需要输入的是结合文档上下文的名称,否则会报错。
四、About Copys (wsdl)
用于复制文件和内容转换的web service 端点
0、初始化讯息
wsdl:init CopysSoap
虽然初始化已经显示为None,但是实际上为
The protocol server endpoint is formed by appending "/_vti_bin/copy.asmx" to the URL of the site, for example, http://www.contoso.com/Repository/_vti_bin/copy.asmx.
full wsdl: full WSDL
1、获取字节流回调接口(GetItem)
用于获取字节流内容,用于下载文件
通常存在四个输入参数,我们只需要关注第一个和第四个即可。
第一个为获取到的文档上下文url。
第四个为返回的字节流内容。
我们只需要将字节流转换为文档即可。
五、调用SharePoint的方式
sharepoint 2007
sharepoint 2013
经过实际测试,这个解决方案可以兼容SharePoint 2010
dependce on library java-sharepoint-library
兼容性解决方案 JavaScript (full version)
声称可以兼容全部
https://aymkdn.github.io/SharepointPlus/
SharePoint 2007 : Compatible until SharepointPlus v3.0.5 – SP2007 is not tested anymore
SharePoint 2010 : Compatible until SharepointPlus v5.2 – SP2010 is not tested anymore
SharePoint 2013 : Compatible until SharepointPlus v6.1.5 – SP2013 is not tested anymore
SharePoint Online : ✓ current supported version