WebDav的java客户端开发包:Jackrabbit
上一篇帖子“WebDav的java客户端开发包:sardine”中说到,对于开发WebDav客户端
sardine是一个很好的选择,但sardine并未实现WevDav的全部规范,所以我又试了试
apache的Jackrabbit,这个是已退休的slide的替代品。
Jackrabbit中的WevDav客户端只是一个附带的模块,并不是Jackrabbit的主要功能,
所以关于开发的文档很少,我只找到一篇:
http://wiki.apache.org/jackrabbit/WebDAV
我是下载的jackrabbit-standalone-2.0.3.jar包,其中应该大部分类都用不到,不过
我没找到单独的WebDav客户端的包。
演示程序的主要处理就是创建了一个目录,然后上载了jpg文件,最后列出了创建目录
中的内容。其中创建目录要用MkCol命令,上载用Put命令,列出目录内容其实是列出
指定路径下的所有属性。我没有仔细研究过WebDav的规范,估计jackrabbit是按照规范
实现的,需要理解WebDav的规范才能很好地使用,sardine则要接近对WebDav的一般性
理解,不需要理解相应的规范就可以快速地开始使用。
下面就是我的演示程序代码:
- package test;
- import java.io.FileInputStream;
- import java.io.IOException;
- import org.apache.commons.httpclient.Credentials;
- import org.apache.commons.httpclient.HttpClient;
- import org.apache.commons.httpclient.UsernamePasswordCredentials;
- import org.apache.commons.httpclient.auth.AuthScope;
- import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
- import org.apache.commons.httpclient.methods.RequestEntity;
- import org.apache.jackrabbit.webdav.DavConstants;
- import org.apache.jackrabbit.webdav.DavException;
- import org.apache.jackrabbit.webdav.MultiStatus;
- import org.apache.jackrabbit.webdav.MultiStatusResponse;
- import org.apache.jackrabbit.webdav.client.methods.DavMethod;
- import org.apache.jackrabbit.webdav.client.methods.MkColMethod;
- import org.apache.jackrabbit.webdav.client.methods.PropFindMethod;
- import org.apache.jackrabbit.webdav.client.methods.PutMethod;
- public class TestJackrabbit {
- public static void main(String[] args) throws IOException, DavException {
- HttpClient client = new HttpClient();
- Credentials creds = new UsernamePasswordCredentials("admin", "admin");
- client.getState().setCredentials(AuthScope.ANY, creds);
- DavMethod mkCol = new MkColMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder");
- client.executeMethod(mkCol);
- System.out.println("mkcol testfolder:" + mkCol.getStatusCode() + " " + mkCol.getStatusText());
- PutMethod put = new PutMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder/testimg.jpg");
- RequestEntity requestEntity = new InputStreamRequestEntity(new FileInputStream("img12.jpg"));
- put.setRequestEntity(requestEntity);
- client.executeMethod(put);
- System.out.println("put image file:" + put.getStatusCode() + " " + put.getStatusText());
- DavMethod find = new PropFindMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder", DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1);
- client.executeMethod(find);
- MultiStatus multiStatus = find.getResponseBodyAsMultiStatus();
- MultiStatusResponse[] responses = multiStatus.getResponses();
- System.out.println("Folders and files:");
- for (int i=0; i<responses.length; i++) {
- System.out.println(responses[i].getHref());
- }
- }
- }
WebDav的java客户端开发包:Jackrabbit的更多相关文章
- WebDav的java客户端开发包:sardine
最近需要对WebDav服务器进行操作,查找了一下,基于java的开发包主要有这几个: slide Jackrabbit sardine webdavclient4j 其中slide是apache的一个 ...
- Tedis:淘宝的Redis的Java客户端开发包
Tedis:淘宝的Redis的Java客户端开发包 http://www.open-open.com/lib/view/open1389880631976.html Tedis Tedis是另 ...
- Redis客户端开发包:Jedis学习-高级应用
事务 Jedis中事务的写法是将redis操作写在事物代码块中,如下所示,multi与exec之间为具体的事务. jedis.watch (key1, key2, ...); Transaction ...
- Redis客户端开发包:Jedis学习-入门
添加Jedis依赖 我们可以使用以下三种方式来添加Jedis依赖. 1.下载jar文件 从http://search.maven.org/下载最近的jedis包和Apache Commons Pool ...
- JAVA&&JAVA WEB开发包U盘封装版
难以忍受机房的开发环境,就简单实现了将所有的开发文件封装进了U盘. 基于wmic的强大功能,实现了机房变态环境下的设置环境变量OS不用重新启动OS! install.bat @echo off mod ...
- Java OAuth开发包资料
原文地址:http://www.oschina.net/project/tag/307/oauth?lang=19&sort=time
- 使用java客户端调用redis
Redis支持很多编程语言的客户端,有C.C#.C++.Clojure.Common Lisp.Erlang.Go.Lua.Objective-C.PHP.Ruby.Scala,甚至更时髦的Node. ...
- Redis JAVA客户端 Jedis常用方法
Jedis 是 Redis 官方首选的 Java 客户端开发包 (redis的java版本的客户端实现) #MAVEN配置 <dependency> <groupId>redi ...
- 常见的装包的三种宝,包 bao-devel bao-utils bao-agent ,包 开发包 工具包 客户端
常见的装包的三种宝,包 bao-devel bao-utils bao-agent ,包 开发包 工具包 客户端
随机推荐
- iOS开发-plist文件增删改查
plist第一次看到这个后缀名文件的时候感觉怪怪的,不过接触久了也就习以为常了,plist是Property List的简称可以理解成属性列表文件,主要用来存储串行化后的对象的文件.扩展名为.plis ...
- IOS之Block讲解
Block,称为代码块,它是一个C级别的语法以及运行时的一个特性,和标准C中的函数(函数指针)类似,但是其运行需要编译器和运行时支持,从ios4.0开始就很好的支持Block. Block很像匿名方法 ...
- TypeError: 'newline' is an invalid keyword argument for this function 错误解决
出错代码: outputFile = open('output1.csv', 'w', newline='') # error line outputWriter = csv.writer(outpu ...
- 安装Ubuntu 桌面版 12.04 LTS 过程之记录
[下载ISO文件刻录到光盘上] 1.首先从http://www.ubuntu.com/download/desktop/zh-CN找到合适的版本下载. 2.完毕后,将ISO文件放好.然后启动nero, ...
- Shell程序荟萃
--------------纯输出----------------1.sh #!/bin/sh echo -e "Hello!world!\a\n"exit 0 --------- ...
- (算法)构造MaxTree
题目: 给定一个没有重复元素的数组A,定义A上的MaxTree如下:MaxTree的根节点为A中最大的数,根节点的左子树为数组中最大数左边部分的MaxTree,右子树为数组中最大数右边部分的MaxTr ...
- Android actionBar与Fragment结合使用Demo2
上一篇文章介绍了ActionBar的使用,这里介绍ActionBar的还有一种用法.达到的效果和曾经的GroupActivity或TabHost是一样的,可作为导航来使用. 实现效果图: 源码: 布局 ...
- STL - 容器 - Forward List
forward list是一个行为受限的list, 不能走回头路. 它只提供前向迭代器, 而不提供双向迭代器. eg: rbegin(), rend(), crbegin(), crend()这些都不 ...
- curl_errno错误码说明
http://hi.baidu.com/lifang218c/item/fa80496eb4cf262f68105b50 http://blog.csdn.net/cwj649956781/artic ...
- ubuntu 安装 codelite
http://www.linuxidc.com/Linux/2013-06/85332.htm Ubuntu 12.04下为codelite增添更新源 1.获取codelite的公钥 sudo apt ...