Subject: Problem implementing simple WebDAV Server

From: "Lukas Mathis" <[email-masked]>
Date: Thu, 20 Oct 2005 11:21:23 +0200

Hi,

I'm trying to implement a simple WebDAV server. So far, I've implemented a
propfind method based on example code found in Lisa Dusseault's book
"WebDAV: Next-Generation Collaborative Web Authoring". The method simply
returns an empty directory. Unfortunately, Trying to access it using
Windows' web folders ("webfolder client") gives an error ("Cannot connect to
the Web server http://10.0.0.70:4444/webdav/. The server could not be
located, or may be too busy to respond. Please check your typing or check to
make sure the Web server is available"). BitKinex, on the other hand,
displays the empty directory just fine.

One possible source of the problem may be that web folders seem to try to
access or create several files with "vti" in their name - outside the
/webdav/ folder. This fails, obviously - the root of my server is a normal
web server, no WebDAV server.

I've tried several fixes to go around bugs in web folders, including
changing what options and headers / and /webdav/ return. On another list,
Julian Reschke gave me some pointers to such bugs in web folders, but I did
not manage to fix my problem. I'm not sure if the problem really lies with
web folders, or if I'm just missing some error in my code which BitKinex
ignores.

Any help would be greatly appreciated.

Here's the exchange between web folders and my simple WebDAV server (running
as a Servet inside /webdav):

Request >>>>>>>>>>>>>>>>>>>>>

PROPFIND /webdav HTTP/1.1
Content-Language: en-us
Accept-Language: de-ch, en-us;q=0.5
Content-Type: text/xml
Translate: f
Depth: 0
Content-Length: 0
User-Agent: Microsoft Data Access Internet Publishing Provider DAV
Host: 10.0.0.70:4444
Connection: Keep-Alive
Cookie: JSESSIONID=B671A9ACFAE14F486E24305FB6927063

Response <<<<<<<<<<<<<<<<<<<<

HTTP/1.1 207 Multi-Status
Server: Apache-Coyote/1.1
Date: Thu, 20 Oct 2005 09:01:56 GMT
Expires: Thu, 20 Oct 2005 09:01:56 GMT
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/xml;charset=UTF-8
Content-Length: 823

<?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D="DAV:">
     <D:response>
          <D:href>http://10.0.0.70:4444/webdav/</D:href>
          <D:propstat>
               <D:prop>
                    <D:creationdate>2001-05-11T17:33:11Z</D:creationdate>
                    <D:displayname>webdav</D:displayname>
                    <D:getlastmodified>Thu, 16 Aug 2001 23:24:33
GMT</D:getlastmodified>
                    <D:resourcetype/>
                    <D:supportedlock/>
                    <D:lockdiscovery/>
               </D:prop>
               <D:status>HTTP/1.1 200 OK</D:status>
          </D:propstat>
          <D:propstat>
               <D:prop><D:getetag/></D:prop>
               <D:status>HTTP/1.1 404 Not Found</D:status>
          </D:propstat>
     </D:response>
   </D:multistatus>

Request >>>>>>>>>>>>>>>>>>>>>

GET /_vti_inf.html HTTP/1.1
Date: Thu, 20 Oct 2005 09:01:56 GMT
MIME-Version: 1.0
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MS FrontPage 6.0)
Host: 10.0.0.70:4444
Accept: auth/sicily
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=B671A9ACFAE14F486E24305FB6927063

Response <<<<<<<<<<<<<<<<<<<<

HTTP/1.1 404 /_vti_inf.html
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Thu, 20 Oct 2005 09:01:56 GMT

851
<html>
<!-- removed html code -->
</html>
0

Request >>>>>>>>>>>>>>>>>>>>>

POST /_vti_bin/shtml.exe/_vti_rpc HTTP/1.1
Date: Thu, 20 Oct 2005 09:01:56 GMT
MIME-Version: 1.0
User-Agent: MSFrontPage/6.0
Host: 10.0.0.70:4444
Accept: auth/sicily
Content-Length: 41
Content-Type: application/x-www-form-urlencoded
X-Vermeer-Content-Type: application/x-www-form-urlencoded
Connection: Keep-Alive
Cache-Control: no-cache

Response <<<<<<<<<<<<<<<<<<<<

HTTP/1.1 404 /_vti_bin/shtml.exe/_vti_rpc
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Thu, 20 Oct 2005 09:01:56 GMT

851
<html>
<!-- removed html code -->
</html>
0

Request >>>>>>>>>>>>>>>>>>>>>

method=server+version%3a6%2e0%2e2%2e5523
GET /_vti_inf.html HTTP/1.1
Date: Thu, 20 Oct 2005 09:01:56 GMT
MIME-Version: 1.0
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MS FrontPage 6.0)
Host: 10.0.0.70:4444
Accept: auth/sicily
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=B671A9ACFAE14F486E24305FB6927063

Response <<<<<<<<<<<<<<<<<<<<

HTTP/1.1 404 /_vti_inf.html
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Thu, 20 Oct 2005 09:01:56 GMT

851
<html>
<!-- removed html code -->
</html>
0

Request >>>>>>>>>>>>>>>>>>>>>

POST /_vti_bin/shtml.exe/_vti_rpc HTTP/1.1
Date: Thu, 20 Oct 2005 09:01:56 GMT
MIME-Version: 1.0
User-Agent: MSFrontPage/6.0
Host: 10.0.0.70:4444
Accept: auth/sicily
Content-Length: 41
Content-Type: application/x-www-form-urlencoded
X-Vermeer-Content-Type: application/x-www-form-urlencoded
Connection: Keep-Alive
Cache-Control: no-cache

Response <<<<<<<<<<<<<<<<<<<<

HTTP/1.1 404 /_vti_bin/shtml.exe/_vti_rpc
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Thu, 20 Oct 2005 09:01:56 GMT

851
<html>
<!-- removed html code -->
</html>
0

Request >>>>>>>>>>>>>>>>>>>>>

method=server+version%3a6%2e0%2e2%2e5523
OPTIONS / HTTP/1.1
Translate: f
User-Agent: Microsoft Data Access Internet Publishing Provider Protocol
Discovery
Host: 10.0.0.70:4444
Content-Length: 0
Connection: Keep-Alive
Cookie: JSESSIONID=B671A9ACFAE14F486E24305FB6927063

Response <<<<<<<<<<<<<<<<<<<<

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Date: Thu, 20 Oct 2005 09:01:56 GMT
Expires: Thu, 20 Oct 2005 09:01:56 GMT
Pragma: no-cache
Cache-Control: no-cache
Allow: OPTIONS, GET, HEAD, POST, DELETE, TRACE, PROPPATCH, COPY, MOVE, LOCK,
UNLOCK, PROPFIND, PUT
DAV: 1,2
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 1

---

From: Julian Reschke <[email-masked]>
Date: Thu, 20 Oct 2005 12:05:13 +0200

> web server, no WebDAV server.

That's the client trying Frontpage Extensions after it wasn't happy with 
the PROPFIND reply.

>                     <D:getlastmodified>Thu, 16 Aug 2001 23:24:33

That should be <D:resourcetype><D:collection/></D:resourcetype>, right?

> Content-Type: text/html;charset=ISO-8859-1

Best regards, Julian

-- 
<green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760