Примеры запросов-ответов WebDAV? Особенно PROPFIND

#webdav

#webdav

Вопрос:

В настоящее время я внедряю сервер WebDAV и полностью застрял в обработке метода PROPFIND. Есть ли какие-либо ресурсы с реальными примерами? Мне трудно следовать спецификации, которая имо очень расплывчата. Вот, например, запрос «Лакмус», который отправляет мой сервер:

 <?xml version="1.0" encoding="UTF-8"?>
<a:propfind xmlns:a="DAV:" xmlns="DAV:">
    <b:prop xmlns:b="DAV:">
        <b:getcontentlength/>
        <b:getlastmodified/>
        <b:displayname/>
        <b:resourcetype/>
        <c:foo xmlns:c="http://example.com/neon/litmus/" xmlns="http://example.com/neon/litmus/"/>
        <bar/>
    </b:prop>
</a:propfind>
  

По-видимому, мой ответ на это не подходит, поскольку Лакмусовая бумажка гласит: «4. propfind_d0……….. СБОЙ (ответы не возвращаются) «:

 <?xml version="1.0" encoding="UTF-8"?>
<DAV:multistatus
    xmlns:DAV="DAV:">
    <DAV:response>
        <DAV:href>/test/litmus/</DAV:href>
        <DAV:propstat>
            <DAV:prop>
                <DAV:getlastmodified>Fri, 30 Sep 2016 23:28:31  0000</DAV:getlastmodified>
                <DAV:displayname>litmus</DAV:displayname>
                <DAV:resourcetype>
                    <DAV:collection></DAV:collection>
                </DAV:resourcetype>
            </DAV:prop>
            <DAV:status>HTTP/1.1 200 OK</DAV:status>
        </DAV:propstat>
        <DAV:propstat>
            <DAV:prop>
                <DAV:getcontentlength></DAV:getcontentlength>
                <a:foo
                    xmlns:a="http://example.com/neon/litmus/">
                </a:foo>
                <a:bar></a:bar>
            </DAV:prop>
            <DAV:status>HTTP/1.1 404 Not Found</DAV:status>
        </DAV:propstat>
    </DAV:response>
</DAV:multistatus>
  

Какой был бы правильный ответ и как я могу это выяснить?

Комментарии:

1. Одна из проблем заключается в том, что вас попросили указать свойства «foo» в пространстве имен » example.com/neon/litmus » и «bar» в пустом пространстве имен, но вернули результаты «не найдено» для «foo» и «bar» в пространстве имен «DAV:».

2. Я исправил это — см. Редактирование — но проблема все еще сохраняется…

3. Приведенный выше ответ прямо сейчас не анализируется; элемент «<a:bar>» не имеет объявления пространства имен.