上一篇帖子“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的一般性

理解,不需要理解相应的规范就可以快速地开始使用。

下面就是我的演示程序代码:

    1. package test;
    2. import java.io.FileInputStream;
    3. import java.io.IOException;
    4. import org.apache.commons.httpclient.Credentials;
    5. import org.apache.commons.httpclient.HttpClient;
    6. import org.apache.commons.httpclient.UsernamePasswordCredentials;
    7. import org.apache.commons.httpclient.auth.AuthScope;
    8. import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
    9. import org.apache.commons.httpclient.methods.RequestEntity;
    10. import org.apache.jackrabbit.webdav.DavConstants;
    11. import org.apache.jackrabbit.webdav.DavException;
    12. import org.apache.jackrabbit.webdav.MultiStatus;
    13. import org.apache.jackrabbit.webdav.MultiStatusResponse;
    14. import org.apache.jackrabbit.webdav.client.methods.DavMethod;
    15. import org.apache.jackrabbit.webdav.client.methods.MkColMethod;
    16. import org.apache.jackrabbit.webdav.client.methods.PropFindMethod;
    17. import org.apache.jackrabbit.webdav.client.methods.PutMethod;
    18. public class TestJackrabbit {
    19. public static void main(String[] args) throws IOException, DavException {
    20. HttpClient client = new HttpClient();
    21. Credentials creds = new UsernamePasswordCredentials("admin", "admin");
    22. client.getState().setCredentials(AuthScope.ANY, creds);
    23. DavMethod mkCol = new MkColMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder");
    24. client.executeMethod(mkCol);
    25. System.out.println("mkcol testfolder:" + mkCol.getStatusCode() + " " + mkCol.getStatusText());
    26. PutMethod put = new PutMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder/testimg.jpg");
    27. RequestEntity requestEntity = new InputStreamRequestEntity(new FileInputStream("img12.jpg"));
    28. put.setRequestEntity(requestEntity);
    29. client.executeMethod(put);
    30. System.out.println("put image file:" + put.getStatusCode() + " " + put.getStatusText());
    31. DavMethod find = new PropFindMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder", DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1);
    32. client.executeMethod(find);
    33. MultiStatus multiStatus = find.getResponseBodyAsMultiStatus();
    34. MultiStatusResponse[] responses = multiStatus.getResponses();
    35. System.out.println("Folders and files:");
    36. for (int i=0; i<responses.length; i++) {
    37. System.out.println(responses[i].getHref());
    38. }
    39. }
    40. }

WebDav的java客户端开发包:Jackrabbit的更多相关文章

  1. WebDav的java客户端开发包:sardine

    最近需要对WebDav服务器进行操作,查找了一下,基于java的开发包主要有这几个: slide Jackrabbit sardine webdavclient4j 其中slide是apache的一个 ...

  2. Tedis:淘宝的Redis的Java客户端开发包

    Tedis:淘宝的Redis的Java客户端开发包   http://www.open-open.com/lib/view/open1389880631976.html   Tedis Tedis是另 ...

  3. Redis客户端开发包:Jedis学习-高级应用

    事务 Jedis中事务的写法是将redis操作写在事物代码块中,如下所示,multi与exec之间为具体的事务. jedis.watch (key1, key2, ...); Transaction ...

  4. Redis客户端开发包:Jedis学习-入门

    添加Jedis依赖 我们可以使用以下三种方式来添加Jedis依赖. 1.下载jar文件 从http://search.maven.org/下载最近的jedis包和Apache Commons Pool ...

  5. JAVA&&JAVA WEB开发包U盘封装版

    难以忍受机房的开发环境,就简单实现了将所有的开发文件封装进了U盘. 基于wmic的强大功能,实现了机房变态环境下的设置环境变量OS不用重新启动OS! install.bat @echo off mod ...

  6. Java OAuth开发包资料

    原文地址:http://www.oschina.net/project/tag/307/oauth?lang=19&sort=time

  7. 使用java客户端调用redis

    Redis支持很多编程语言的客户端,有C.C#.C++.Clojure.Common Lisp.Erlang.Go.Lua.Objective-C.PHP.Ruby.Scala,甚至更时髦的Node. ...

  8. Redis JAVA客户端 Jedis常用方法

    Jedis 是 Redis 官方首选的 Java 客户端开发包 (redis的java版本的客户端实现) #MAVEN配置 <dependency> <groupId>redi ...

  9. 常见的装包的三种宝,包 bao-devel bao-utils bao-agent ,包 开发包 工具包 客户端

    常见的装包的三种宝,包  bao-devel    bao-utils   bao-agent  ,包    开发包   工具包  客户端

随机推荐

  1. Unity3D游戏开发最佳实践20技巧(三)

    [文本] 38.假设你有非常多的剧情文本.那么把他们放到一个文件中面. 不要把他们放到Inspector的字段中去编辑. 这些须要做到不打开Unity,也不用保存Scene就能够方便的改动. 39.假 ...

  2. 【翻译自mos文章】CRS显示 正在执行的db instance 是offline状态

    CRS显示 正在执行的db instance 是offline状态 转自: CRS shows Running Instance Status as OFFLINE (Doc ID 1673397.1 ...

  3. 运维-JVM监控之内存泄漏

    转载:https://blog.csdn.net/zdx_csdn/article/details/71214219 jmap -heap pid查看进程堆内存使用情况,包括使用的GC算法.堆配置参数 ...

  4. 装上了Fedora19

    超期服役的Aspire黑机器在一个下午主动退役了,为了填补它留下的空白,趁JD减价入手了一台宏碁(acer) SQX4610 120N,就为了玩Linux. 这机器用光驱启动有些特殊,需要在启动时不断 ...

  5. UVA 10026 Shoemaker's Problem 鞋匠的难题 贪心+排序

    题意:鞋匠一口气接到了不少生意,但是做鞋需要时间,鞋匠只能一双一双地做,根据协议每笔生意如果拖延了要罚钱. 给出每笔生意需要的天数和每天的罚钱数,求出最小罚钱的排列顺序. 只要按罚款/天数去从大到小排 ...

  6. Linux内核二层数据包接收流程

    本文主要讲解了Linux内核二层数据包接收流程,使用的内核的版本是2.6.32.27 为了方便理解,本文采用整体流程图加伪代码的方式从内核高层面上梳理了二层数据包接收的流程,希望可以对大家有所帮助.阅 ...

  7. java多线程解决应用挂死的问题

    这两天为了定位JBOSS老是挂死的问题,学习了一下JAVA多线程方面的知识,在此总结一下 1.在Java程序中,JVM负责线程的调度.线程调度是指按照特定的机制为多个线程分配CPU的使用权. 调度的模 ...

  8. cordova 常用插件

    一,插件相关常用命令   1,查看所有已经安装的插件 1 cordova plugin ls 2,安装插件(以camera插件为例) 1 cordova plugin add cordova-plug ...

  9. R语言-查找满足条件的数并获取索引

    1.在R语言中,怎样找到满足条件的数呢? 比如给定一个向量c2.要求找到数值大于0的数: > c2  [1] 0.00 0.00 0.00 0.00 0.00 0.00 0.06 0.09 0. ...

  10. 【laravel5.4】git上clone项目到本地,配置和运行 项目报错:../vendor/aotuload.php不存在

    1.一般我们直接使用git clone 将git的项目克隆下来,在本地git库和云上git库建立关联关系 2.vendor[扩展]文件夹是不会上传的,那么下载下来直接运行项目,会报错: D:phpSt ...