如何使用 OpenOffice 进行 WebDAV PROPFIND 响应和协议

Posted

技术标签:

【中文标题】如何使用 OpenOffice 进行 WebDAV PROPFIND 响应和协议【英文标题】:How to WebDAV PROPFIND response and protocolling with OpenOffice 【发布时间】:2018-11-06 15:40:23 【问题描述】:

我从 Open Office Calc 收到以下 WebDAV 请求。你可以在它下面看到我的服务器响应。我想这不是正确的答案,因为在我的服务器发送 ansver 后获得了具有相同参数的另一个 PROPFIND 请求。之后是 HEAD 和 GET 消息。有人可以纠正它吗?并解释 Calc 在这个 PROPFIND 序列中实际请求什么?

我想从我的 C 代码中为 Open Office Calc 传输一个简单的 html 表格。

我很感激 彼得

请求

PROPFIND / HTTP1.1
Host: WXPPx86BE-2318:80
user:-Agent: OpenOffice/4.0.0
Accept-Encoding: gzip
Depth: 0
Content-Type: application/xml
Content-Lenght: 230

<?xml version="1.0" encoding="utf-8"?>
<propfind xmlns="DAV:"/>
  <prop>
   <resourcetype xmlnx="DAV:"/>
   <IsReadOnly xmlnx="http://ucb.openoffice.org/dav/props/"/>
   <getcontenttype xmlnx="DAV:"/>
   <supportedlock xmlnx="DAV:"/>
  </prop>
</propfind>

回应

HTTP/1.1 207 Multi-Status
Content-Type: text/xml
Content-Lenght: XXXX

<?xml version="1.0" encoding="UTF-8"?>
<D:multistatus xmlns:D="DAV:">
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://192.168.0.49/"> 
<D:href>/</D:href> 
<D:propstat> <D:prop> <D:resourcetype>
<D:collection/></D:resourcetype>
<IsReadOnly xmlns="http://ucb.openoffice.org/dav/props/">false</IsReadOnly>
<D:getcontenttype>text/html</D:getcontenttype>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>

【问题讨论】:

【参考方案1】:

欢迎来到 Dav 的精彩世界!

上面的 XML 对我来说是正确的。但只是根据我自己的经验提出的一些一般性建议..

PROPFIND 本身是不够的。客户端还使用 HEAD 和 OPTIONS 请求来发现服务器功能。 通常,主要的 Dav 客户端会针对单个用户操作(例如打开或保存文件)执行大约 10 个 http 请求。 客户端发送的所有请求都必须成功,并且在语义上必须正确。

在使用 Dav 的新开发人员中,一个常见的错误是只删除响应,例如锁定 ID。但千万不要这样做,每个响应都必须在语义上正确,否则客户端内部的逻辑将失败并中止进程。

不幸的是,通常很难或不可能从 dav 客户端访问日志,因此很难找出问题所在。唯一可行的方法(恕我直言)是确保您实现所有内容,并且一切都是正确的。

您可能会发现最容易使用 Dav 服务器库,例如 SabreDav 或 Milton(我的(非免费)项目 - http://milton.io)

【讨论】:

以上是关于如何使用 OpenOffice 进行 WebDAV PROPFIND 响应和协议的主要内容,如果未能解决你的问题,请参考以下文章

GCDWebServer:如何更改服务器上的文件权限以进行 WebDAV 操作? (iOS)

如何使用 Vb.net 在 Openoffice 中进行 Mailmerge

我如何使用php与openoffice进行通信

Confluence 6 使用 WebDAV 客户端来对页面进行操作

Confluence 6 使用 WebDAV 客户端来对页面进行操作

再次使用delphi进行openoffice calc