首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android webdav Java Sardine

Android webdav Java Sardine
EN

Stack Overflow用户
提问于 2011-11-24 23:13:24
回答 3查看 3.5K关注 0票数 0

我正在尝试用Sardine在android中做一个webdav客户端,我正在尝试以下代码:

这在JAVA应用程序上工作得很好,但在android中崩溃了:(

代码语言:javascript
复制
    HttpClient client = new DefaultHttpClient();
    SardineImpl sardine = new SardineImpl((AbstractHttpClient) client,"testuser","test");
    List<DavResource> resources = sardine.getResources("http://demo.sabredav.org/");
    for (int i = 1; i < resources.size(); i++) {  

          System.out.println(resources.get(i));  
}

Toast替换System.out.println我得到了这样的结果

代码语言:javascript
复制
11-24 16:05:34.602: ERROR/AndroidRuntime(19362): java.lang.NoSuchMethodError: org.apache.http.impl.client.AbstractHttpClient.setRedirectStrategy
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at com.googlecode.sardine.impl.SardineImpl.init(SardineImpl.java:188)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at com.googlecode.sardine.impl.SardineImpl.<init>(SardineImpl.java:182)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at es.sardine.sardine.onCreate(sardine.java:39)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1065)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2797)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at android.app.ActivityThread.access$2300(ActivityThread.java:135)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at android.os.Looper.loop(Looper.java:143)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at android.app.ActivityThread.main(ActivityThread.java:4914)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at java.lang.reflect.Method.invokeNative(Native Method)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at java.lang.reflect.Method.invoke(Method.java:521)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-24 16:05:34.602: ERROR/AndroidRuntime(19362):     at dalvik.system.NativeStart.main(Native Method)
EN

回答 3

Stack Overflow用户

发布于 2017-12-06 19:10:55

我在尝试使用沙丁和Apache HttpClient时遇到了同样的问题,这会与Android中嵌入的版本冲突。所以我决定用OkHttp代替它,这样我的麻烦就少了很多。下面是我创建的fork:https://github.com/thegrizzlylabs/sardine-android

票数 1
EN

Stack Overflow用户

发布于 2011-12-25 09:07:24

你看到这个q:Using webdav on Android了吗?它本质上是说沙丁鱼需要比安卓软件包更新的HttpClient版本,并提供了一个可以链接到安卓应用程序中的修补HttpClient 4.1。

票数 0
EN

Stack Overflow用户

发布于 2015-10-19 01:40:50

对于只迭代服务器上的元素的人来说,这段代码对我来说很有效:

代码语言:javascript
复制
 try{

            Sardine sardine = SardineFactory.begin("username", "password");

            List<DavResource> resources = sardine.list("webdav/server/directory/");
            buffer = new StringBuilder();
            for (DavResource res : resources)
            {
                //for example
                buffer.append(res.toString());
            }
        }catch(Exception e){
                Log.e("VIEWER" , e.getMessage());
        }

我将Sardine-Android项目库与simpleframework.xml结合使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8259221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档