I found it surprisingly hard to find this simple recipe on the web, so thought I'd document it here. The difficulty of achieving this with AtomPub has been one factor holding back wider use and further development of Shuffl, so hopefully that will be changing.
To use WebDAV to list the contents of a directory, issue an HTTP request like this:
PROPFIND /webdav/ HTTP/1.1 Host: localhost Depth: 1 <?xml version="1.0"?> <a:propfind xmlns:a="DAV:"> <a:prop><a:resourcetype/></a:prop> </a:propfind>
Or, using curl
, a Linux shell command like this:
curl -i -X PROPFIND http://localhost/webdav/ --upload-file - -H "Depth: 1" <<end <?xml version="1.0"?> <a:propfind xmlns:a="DAV:"> <a:prop><a:resourcetype/></a:prop> </a:propfind> end
The response is an XML file like this:
HTTP/1.1 207 Multi-Status Date: Tue, 27 Apr 2010 09:38:30 GMT Server: Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1 Content-Length: 706 Content-Type: text/xml; charset="utf-8" <?xml version="1.0" encoding="utf-8"?> <D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:"> <D:response xmlns:lp1="DAV:"> <D:href>/webdav/</D:href> <D:propstat> <D:prop> <lp1:resourcetype><D:collection/></lp1:resourcetype> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> <D:response xmlns:lp1="DAV:"> <D:href>/webdav/README</D:href> <D:propstat> <D:prop> <lp1:resourcetype/> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> <D:response xmlns:lp1="DAV:"> <D:href>/webdav/shuffltest/</D:href> <D:propstat> <D:prop> <lp1:resourcetype><D:collection/></lp1:resourcetype> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>
There, that was easy!
hi !
ReplyDeletethanks a lot for your posting ! that's what i was looking for.
but there is still one question...
is there a way to move the xml in a file and pass it to curl ?
i tried it this way
--upload-file request.xml
but this doesn't work :(
any hints ?
phil