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 ,包 开发包 工具包 客户端
 
随机推荐
- Geolocation地理定位
			
地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML5 地理位置定位的基本原理及各个 ...
 - 模态框在IE下的问题,即position:fixed在IE下不兼容的处理方式
			
项目中遇到的问题,模态框在IE下总出现如图所示双层遮罩框,经排查发现是由于bootstrap里写的modal的样式里position:fixed不兼容IE的原因,导致铺不满整个窗口. 解决方案:在项目 ...
 - js 获取读取cookie
			
// --- 设置cookie function setCookie(sName, sValue, expireHours) { var cookieString = sName + &quo ...
 - 我为何放弃Gulp与Grunt,转投npm scripts(上)
			
本文来源于我在InfoQ中文站翻译的文章.原文地址是:http://www.infoq.com/cn/news/2016/02/gulp-grunt-npm-scripts-part1 Cory Ho ...
 - [Backbone] Verying Views
			
Below we have our AppointmentsView instance rendering and then taking the rendered HTML and insertin ...
 - C#.NET常见问题(FAQ)-如何修改代码字体
			
工具-选项-字体和颜色 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrob ...
 - 缺少dll文件的解决方法
			
1.什么是dll文件 从专业的角度来说,dll文件,即动态连接库,是一种不可执行的二进制文件,它允许程序共享执行特殊任务所必需的代码和其他资源.打个比方,相当于你去饭店吃饭,只人带上钱或卡就可以了,不 ...
 - 在自己的服务器上部署 GitLab 社区版
			
GitLab 简介 因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.这篇文章是在 Gitlab 7.4 的环境下配置的,相关内容可能已经过时. 后续做了一次迁移,将 Gi ...
 - oracle 之监听保护
			
今天是2013-08-24,不对刚刚过了12点,应该是2013-08-25日,今天我的同事对数据库 进行监听安全加固失败,然后 我的哥们也做了同样的实验,结果还是失败,至此我不知道 什么原因,在此想对 ...
 - MVC Linq动态排序
			
在nuget 中searh System.Linq.Dynamic 安装对应的版本, 这样都可以使用了 var orderExpression = string.Format("{0} {1 ...