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

时间:2018-11-06 15:40:23

标签: webdav

我从Open Office Calc收到以下WebDAV请求。您可以在下面看到我的服务器响应。我想这不是正确的答案,因为在我的服务器发送响应后,使用相同的参数获得了提示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 个答案:

答案 0 :(得分:0)

欢迎来到Dav的美好世界!

上面的XML对我来说是正确的。但是根据我的经验,只有几个一般性的建议。

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

使用Dav的新开发人员中的一个常见错误是仅存出响应,例如Lock ID。但是永远不要这样做,每个响应在语义上都必须正确,否则客户端内部的逻辑将失败并且将中止该过程。

不幸的是,通常很难或不可能从dav客户端访问日志,因此很难找出问题所在。唯一有效的方法(恕我直言)是确保您实施的所有操作都正确无误。

您可能会发现使用诸如SabreDav或Milton(我的(非免费)项目-http://milton.io)之类的Dav服务器库最简单