# web.dav.client 库模块帮助文档

<details>  <summary>说明</summary>  <p>
WebDav 的操作路径应当始终是相对于 URL 根目录的完整路径。
操作目录时参数中的目录路径应当以 `/` 结尾以明确表示目录。

例如 WebDav 服务端登录地址为 "http://localhost/webdav/"，
则下载 "http://localhost/webdav/test.txt" 的请求路径应当是 "/webdav/test.txt"。
如果发送的命令指定请求路径 "/" 会自动转换为 "/webdav/"

web.dav.client 对象返回或写入的文件路径应当始终是 URL 解码后的路径。
调用 web.dav.client 的代码不需要解码路径，也不要将参数中的路径进行 URL 编码。
web.dav.client 会自动编解码，调用方重复编码会导致错误。
</p></details>

## web.dav 成员列表 <a id="web.dav" href="#web.dav">&#x23;</a>

### web.dav.client <a id="web.dav.client" href="#web.dav.client">&#x23;</a>
WebDAV 客户端。  
非异步客户端，如果有界面则建议在工作线程中运行此客户端。

创建WebDAV 客户端。  
此对象可作为线程参数传入其他线程。

### web.dav.client() <a id="web.dav.client" href="#web.dav.client">&#x23;</a>
[返回对象:webDavClientObject](#webDavClientObject)

### web.dav.client(serverUrl,agent,proxy,proxyBypass,flags) <a id="web.dav.client" href="#web.dav.client">&#x23;</a>
除参数 @serverUrl 必须指定 WebDAV 服务端地址，  
其他参数都是可选参数。  
其余参数用法与 inet.http 相同，请参考 inet.http 构造函数文档。

## webDavClientObject 成员列表 <a id="webDavClientObject" href="#webDavClientObject">&#x23;</a>

### webDavClientObject.copy(srcPath,destPath,overwrite) <a id="webDavClientObject.copy" href="#webDavClientObject.copy">&#x23;</a>
复制资源。  
参数 @srcPath 指定源路径，  
参数 @destPath 指定目标路径，  
参数 @overwrite 可选指定是否覆盖，默认为 true。  
成功返回 true，失败返回 false,错误信息,错误码

### webDavClientObject.delete(path,lockToken) <a id="webDavClientObject.delete" href="#webDavClientObject.delete">&#x23;</a>
删除指定路径的资源。  
参数 @path 指定路径，  
参数 @lockToken 可选指定锁令牌。  
成功返回 true，失败返回 false,错误信息,错误码

### webDavClientObject.download(remotePath,localPath,onReceive) <a id="webDavClientObject.download" href="#webDavClientObject.download">&#x23;</a>
下载远程文件到本地。  
参数 @remotePath 指定远程文件路径，  
参数 @localPath 指定本地保存路径。  
可选指定接收下载进度的 `onReceive(receivedSize,totalSize)` 回调函数。  
成功返回 true；失败返回 false，错误信息，错误码。  
中途取消（onReceive 回调内返回 true）时返回 false,"Cancelled"

### webDavClientObject.exists(path) <a id="webDavClientObject.exists" href="#webDavClientObject.exists">&#x23;</a>
检查资源是否存在。  
参数 @path 指定路径。  
存在返回 true，不存在返回 false

### webDavClientObject.get(path,onReceive) <a id="webDavClientObject.get" href="#webDavClientObject.get">&#x23;</a>
下载指定路径的文件内容。  
参数 @path 指定远程文件路径。  
成功返回文件数据，  
失败返回 null,错误信息,错误码

### webDavClientObject.getInfo(path) <a id="webDavClientObject.getInfo" href="#webDavClientObject.getInfo">&#x23;</a>
获取指定路径资源的详细信息。  
参数 @path 指定路径。  
成功返回资源信息对象，  
失败返回 null,错误信息,错误码

### webDavClientObject.head(path) <a id="webDavClientObject.head" href="#webDavClientObject.head">&#x23;</a>
获取指定路径资源的 HTTP 头信息。  
参数 @path 指定路径。。  
可选指定接收下载进度的 `onReceive(receivedSize,totalSize)` 回调函数。  
成功返回包含 contentLength、contentType、etag、lastModified 字段的表对象。  
失败返回 false,错误信息,错误码

### webDavClientObject.http <a id="webDavClientObject.http" href="#webDavClientObject.http">&#x23;</a>
inet.http 客户端对象，用于发送 HTTP 请求

### webDavClientObject.isCollection(path) <a id="webDavClientObject.isCollection" href="#webDavClientObject.isCollection">&#x23;</a>
检查资源是否为集合（目录）。  
参数 @path 指定路径。  
是目录返回 true，否则返回 false

### webDavClientObject.lastReadErrCode <a id="webDavClientObject.lastReadErrCode" href="#webDavClientObject.lastReadErrCode">&#x23;</a>
最后一次读取数据出错时返回的错误代码,例如网络断开连接等等。  
如果最后一次读取数据未出错则此属性为 null。

### webDavClientObject.lastRequestUrl <a id="webDavClientObject.lastRequestUrl" href="#webDavClientObject.lastRequestUrl">&#x23;</a>
最后一次发送 HTTP 请求使用的网址

### webDavClientObject.lastResponse() <a id="webDavClientObject.lastResponse" href="#webDavClientObject.lastResponse">&#x23;</a>
获取最后一次服务器返回的原始数据,  
仅在调用了readAll函数、或在get,post函数中间接调用readAll函数时设置该值

### webDavClientObject.lastStatusCode <a id="webDavClientObject.lastStatusCode" href="#webDavClientObject.lastStatusCode">&#x23;</a>
最后一次发送请求后服务端返回的 HTTP 状态码  
100 ~ 101 为信息提示  
200 ~ 206 表示请求成功  
300 ~ 305 表示重定向  
400 ~ 415 表求客户端请求出错  
500 ~ 505 表示服务端错误  
注意每次 HTTP 请求开始该值初始化为空,服务器应答后才会设置该值

### webDavClientObject.list(path,depth) <a id="webDavClientObject.list" href="#webDavClientObject.list">&#x23;</a>
列出指定路径下的资源。  
参数 @path 指定路径（解码后的文件路径，如 "/folder/文件 名.txt"）。  
参数 @depth 可选指定深度，默认为 1。  
成功返回资源列表，每项包含 path（URL 解码后的路径）、isCollection、props、status。  
失败返回 null,错误信息,错误码

### webDavClientObject.lock(callback,path,resOwner,scope,timeout) <a id="webDavClientObject.lock" href="#webDavClientObject.lock">&#x23;</a>

```aardio
webDavClientObject.lock(  
	function(lockToken){  
		/*锁定资源时执行此回调函数。  
回调参数 lockToken 用于调用其他方法的 lockToken 参数。  
退出此函数时解除锁定。  
成功则返回回调函数的返回值。*/  
	},"/path"  
)
```

### webDavClientObject.lock(path,resOwner,scope,timeout) <a id="webDavClientObject.lock" href="#webDavClientObject.lock">&#x23;</a>
锁定资源。  
参数 @path 指定路径，  
参数 @resOwner 指定锁的所有者，  
参数 @scope 指定锁的范围（"exclusive" 或 "shared"），  
参数 @timeout 可选指定超时时间（秒）。  

\如果在所有参数前面添加回调函数作为参数，则执行回调函数后自动解锁。n  
成功返回锁令牌，  
失败返回 null,错误信息,错误码

### webDavClientObject.login(username,password) <a id="webDavClientObject.login" href="#webDavClientObject.login">&#x23;</a>
登录 WebDAV 服务器，登录成功返回 true。  
参数 @username 指定用户名，参数 @password 指定密码  
如果不指定  @username 则切换为匿名登录，连接成功返国 true。

### webDavClientObject.mkcol(path) <a id="webDavClientObject.mkcol" href="#webDavClientObject.mkcol">&#x23;</a>
创建集合（目录）。  
参数 @path 指定要创建的目录路径。  
成功返回 true，失败返回 false,错误信息,错误码

### webDavClientObject.mkdir(path) <a id="webDavClientObject.mkdir" href="#webDavClientObject.mkdir">&#x23;</a>
创建目录，等同于 mkcol 函数。  
参数 @path 指定要创建的目录路径。  
成功返回 true，失败返回 false,错误信息,错误码

### webDavClientObject.move(srcPath,destPath,overwrite,lockToken) <a id="webDavClientObject.move" href="#webDavClientObject.move">&#x23;</a>
移动资源。  
参数 @srcPath 指定源路径，  
参数 @destPath 指定目标路径，  
参数 @overwrite 可选指定是否覆盖，默认为 true，  
参数 @lockToken 可选指定锁令牌。  
成功返回 true，失败返回 false,错误信息,错误码

### webDavClientObject.options(path) <a id="webDavClientObject.options" href="#webDavClientObject.options">&#x23;</a>
获取指定路径支持的 HTTP 方法和 WebDAV 功能。  
成功返回包含 status、allow、dav 字段的表对象，  
失败返回 null,错误信息,错误码

### webDavClientObject.propfind(path,depth,props) <a id="webDavClientObject.propfind" href="#webDavClientObject.propfind">&#x23;</a>
获取资源属性。  
参数 @path 指定路径，  
参数 @depth 指定深度（0 或 1），  
参数 @props 可选指定要获取的属性数组。  
成功返回资源列表，  
失败返回 null,错误信息,错误码

### webDavClientObject.proppatch(path,setProps,removeProps) <a id="webDavClientObject.proppatch" href="#webDavClientObject.proppatch">&#x23;</a>
修改资源属性。  
参数 @path 指定路径，  
参数 @setProps 可选指定要设置的属性表，  
参数 @removeProps 可选指定要删除的属性数组。  
成功返回响应内容，  
失败返回 false,错误信息,错误码

### webDavClientObject.put(path,data,lockToken) <a id="webDavClientObject.put" href="#webDavClientObject.put">&#x23;</a>
上传数据到指定路径。  
参数 @path 指定远程路径，  
参数 @data 指定要上传的数据，  
参数 @lockToken 可选指定锁令牌。  
成功返回 true，失败返回 false,错误信息,错误码

### webDavClientObject.refreshLock(path,lockToken,timeout) <a id="webDavClientObject.refreshLock" href="#webDavClientObject.refreshLock">&#x23;</a>
刷新锁的超时时间。  
参数 @path 指定路径，  
参数 @lockToken 指定锁令牌，  
参数 @timeout 可选指定新的超时时间（秒）。  
成功返回响应内容，  
失败返回 false,错误信息,错误码

### webDavClientObject.rename(srcPath,destPath,overwrite,lockToken) <a id="webDavClientObject.rename" href="#webDavClientObject.rename">&#x23;</a>
重命名资源，等同于 move 函数。  
参数 @srcPath 指定源路径，  
参数 @destPath 指定目标路径，  
参数 @overwrite 可选指定是否覆盖，默认为 true，  
参数 @lockToken 可选指定锁令牌。  
成功返回 true，失败返回 false,错误信息,错误码

### webDavClientObject.serverRootPath <a id="webDavClientObject.serverRootPath" href="#webDavClientObject.serverRootPath">&#x23;</a>
serverUrl 中的路径部分。  
路径为空时则默认设为 `/`

### webDavClientObject.serverUrl <a id="webDavClientObject.serverUrl" href="#webDavClientObject.serverUrl">&#x23;</a>
WebDAV 服务器 URL 地址

### webDavClientObject.serverUrlRoot <a id="webDavClientObject.serverUrlRoot" href="#webDavClientObject.serverUrlRoot">&#x23;</a>
指向根目录 `/` 的服务器网址。

### webDavClientObject.unlock(path,lockToken) <a id="webDavClientObject.unlock" href="#webDavClientObject.unlock">&#x23;</a>
解锁资源。  
参数 @path 指定路径，  
参数 @lockToken 指定锁令牌。  
成功返回 true，失败返回 false,错误信息,错误码

### webDavClientObject.upload(remotePath,localPath,lockToken,onSend) <a id="webDavClientObject.upload" href="#webDavClientObject.upload">&#x23;</a>
上传本地文件到远程路径。  
参数 @remotePath 指定远程文件路径，  
参数 @localPath 指定本地文件路径，  
参数 @lockToken 可选指定锁令牌。  
可选指定接收上传进度的 `onSend(sentSize,totalSize)` 回调函数。  
成功返回 true；失败返回 false，错误信息，错误码。  
中途取消（onSend 回调内返回 true）时返回 false,"Cancelled"

### webDavClientObject.xml <a id="webDavClientObject.xml" href="#webDavClientObject.xml">&#x23;</a>
web.dav.xmlClient 对象，用于处理 WebDAV XML 数据
