zoukankan      html  css  js  c++  java
  • 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的一般性
    理解,不需要理解相应的规范就可以快速地开始使用。

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

    Java代码  收藏代码
      1. package test;  
      2.   
      3. import java.io.FileInputStream;  
      4. import java.io.IOException;  
      5.   
      6. import org.apache.commons.httpclient.Credentials;  
      7. import org.apache.commons.httpclient.HttpClient;  
      8. import org.apache.commons.httpclient.UsernamePasswordCredentials;  
      9. import org.apache.commons.httpclient.auth.AuthScope;  
      10. import org.apache.commons.httpclient.methods.InputStreamRequestEntity;  
      11. import org.apache.commons.httpclient.methods.RequestEntity;  
      12. import org.apache.jackrabbit.webdav.DavConstants;  
      13. import org.apache.jackrabbit.webdav.DavException;  
      14. import org.apache.jackrabbit.webdav.MultiStatus;  
      15. import org.apache.jackrabbit.webdav.MultiStatusResponse;  
      16. import org.apache.jackrabbit.webdav.client.methods.DavMethod;  
      17. import org.apache.jackrabbit.webdav.client.methods.MkColMethod;  
      18. import org.apache.jackrabbit.webdav.client.methods.PropFindMethod;  
      19. import org.apache.jackrabbit.webdav.client.methods.PutMethod;  
      20.   
      21. public class TestJackrabbit {  
      22.     public static void main(String[] args) throws IOException, DavException {  
      23.         HttpClient client = new HttpClient();  
      24.         Credentials creds = new UsernamePasswordCredentials("admin", "admin");  
      25.         client.getState().setCredentials(AuthScope.ANY, creds);  
      26.   
      27.         DavMethod mkCol = new MkColMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder");  
      28.         client.executeMethod(mkCol);  
      29.         System.out.println("mkcol testfolder:" + mkCol.getStatusCode() + " " + mkCol.getStatusText());  
      30.   
      31.         PutMethod put = new PutMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder/testimg.jpg");  
      32.         RequestEntity requestEntity = new InputStreamRequestEntity(new FileInputStream("img12.jpg"));  
      33.         put.setRequestEntity(requestEntity);  
      34.         client.executeMethod(put);  
      35.         System.out.println("put image file:" + put.getStatusCode() + " " + put.getStatusText());  
      36.           
      37.         DavMethod find = new PropFindMethod("http://192.168.1.71:4502/crx/repository/crx.default/content/dam/testfolder", DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1);  
      38.         client.executeMethod(find);  
      39.         MultiStatus multiStatus = find.getResponseBodyAsMultiStatus();  
      40.         MultiStatusResponse[] responses = multiStatus.getResponses();  
      41.         System.out.println("Folders and files:");  
      42.         for (int i=0; i<responses.length; i++) {  
      43.             System.out.println(responses[i].getHref());  
      44.         }    
      45.     }  
  • 相关阅读:
    C# 实现向指定邮箱发送信息功能
    asp.net webapi 解决跨域问题
    电脑通电自动开机设置
    C# 多个控件绑定一个事件
    C# DataGridView 标题栏背景颜色改变
    C# 输出csv文件后缀乱码
    C# textbox设定为只读后如何改变文本字体颜色
    C# 命名规则
    C# 傅里叶变换 逆变换 调用MathNet包
    使用SharpDevelop配合MonoGame进行游戏开发
  • 原文地址:https://www.cnblogs.com/xgjblog/p/3831055.html
Copyright © 2011-2022 走看看