WebDAV 中使用的方法包括:
Options、Head 和 Trace。 主要由应用程序用来发现和跟踪服务器支持和网络行为。
Get。 检索文档。
Put 和 Post。 将文档提交到服务器。
Delete。 销毁资源或集合。
Mkcol。 创建集合。
PropFind 和 PropPatch。 针对资源和集合检索和设置属性。
Copy 和 Move。 管理命名空间上下文中的集合和资源。
Lock 和 Unlock。 改写保护。
WebDAV 请求的一般结构遵循 HTTP 的格式并且由以下三个组件构成:
方法。 声明由客户端执行的方法(上面描述的方法)。
标头。 描述有关如何完成此任务的指令。
主体(可选)。 定义用在该指令或其他指令中的数据,用以描述如何完成此方法。
在主体组件中,XML 成为整个 WebDAV 结构中的关键元素。
XML 对于 WebDAV 的含义
WebDAV 旨在服务器上处理资源提供更多方法。 这些附加的方法通常要求大量信息与请求和响应相关联,以便显式定义客户端或服务器的意图。 通过 HTTP 传递所有信息的方法只是标头在请求和响应方面的责任。 这会对传输强加一些限制。 很难对请求中的多个资源应用标头信息,而且很难描述层次结构。
因为 XML 本来就具有可扩展性,所以选择它来描述这些指令的通讯方式。 由于 XML 提供如下方法,所以它对于 WebDAV 操作至关重要:
设置指令(描述如何处理数据)格式的方法。
设置来自服务器的复杂响应格式的方法。
传递有关所处理的集合和资源的自定义信息的方法。
数据本身的灵活工具。
在较高层,WebDAV 指令处理器实际上是一组逻辑,用来解释 WebDAV 方法,它后面跟随一个 XML 分析器,该分析器解释所传递的大部分信息。
在 WebDAV 中使用 XML 如何将此技术转换为功能如此强大的工具? 首先,XML 提供一种方法来将数据与作用于该数据的方法或者数据的表示方式分开。 这允许对数据进行直接和一致的提取。 对于这些提取的数据,WebDAV 通过现有网络结构所熟悉的信道,在网络结构中的所有层之间提供一种一致、统一的传输方法, 此技术允许在 Microsoft 产品和第三方应用程序之间进行更高级别的互操作。
第二,XML 通过一种扩展方法来增强 WebDAV。 XML 允许客户在 WebDAV 服务器上描述和设置属性。 这些属性随后可用于对服务器上的资源进行索引、搜索和处理。 因为 XML 本来就具有可扩展性,所以这些属性的类型和用途是无限的。
下例(使用 PropPatch 方法)向服务器提交要与该服务器上的每个资源相关联的数据(在本例中为 HTML 文档),然后基于它以前设置的自定义属性来搜索这些文档。 此示例使用成功完成这些任务所必需的原始 WebDAV 请求(通过连网传输的位),然后显示如何使用 MSXMLXMLHTTPRequest 对象来创建类似的请求。
用 WebDAV 和 XML 管理文档
设想您需要方便地标识服务器上大量文档中每个文档的作者。 在非 WebDAV 世界中,为了查找由某个人创作的所有文档,您可以通过在这些文档中搜索文本来查找特定作者的姓名。 这种搜索还将返回在其中偶然引用该特定作者的所有文档。 如果尝试填充一个包含所有这些文档以及每个文档作者的表,会怎么样? 如果单独基于这样的原始文本搜索,这实际上是不可能的。
使用在 XML 中编码的 WebDAV 请求,可以针对集合中的每个文档设置 Author 属性。 此属性随后可用于上面介绍的组织目的。
使用 PropPatch 设置 Author 属性
下面的 WebDAV 请求将针对 MyServer.com 服务器上 WebDavDocs 集合中的 Webdav-xml.htm 文档设置 Author 属性:
PROPPATCH /WebDavDocs/webdav-xml.htm HTTP/1.1
Host: myserver.com
Content-Type: text/xml
Content-Length: 138
此请求的第一行指定客户希望制定的方法 (PropPatch),并给出要设置其属性的文件的绝对 URL。 此方法的后面三行是标头,用来指定此方法将提交到的服务器,并告诉该服务器预期内容的类型和长度。
XML 编码的主体确切告诉该服务器要设置的属性以及应当赋予它的值。 此 XML 文档中一个重要的发现是使用命名空间声明。
元素中的第一个属性定义通过文档来使用 WebDAV 命名空间。 对于此文档中具有该前缀的所有元素,符合 WebDAV 的服务器将知道基于 “DAV:” 架构来应用行为。 在本例中,这些特定属性定义如何针对文档设置属性。
第二个命名空间声明是用于 urn:schemas-microsoft-com:office:office 命名空间的。 在设计 XML 属性时一个最佳策略是彻底检查现有的命名空间,看其中是否存在有用的属性。 但是,同样重要的是,要确保现有的属性按照最初打算防止属性冲突的方式来使用。 通过在我们的方案中使用现有的 Office 属性,它将允许其他能够识别此 Microsoft 自定义命名空间的客户端解释该属性。
为了响应此请求,该服务器将发回一个响应,指出该属性已成功设置。
HTTP/1.1 207 Multi-Status
Server: Microsoft-IIS/5.0
Date: Wed, 04 Aug 1999 21:52:58 GMT
Content-Type: text/xml
Content-Length: 310