Получить весь каталог с сервера WebDAV с библиотекой Jackrabbit - PullRequest
0 голосов
/ 14 ноября 2018

Я пишу рекурсивный метод для получения всех каталогов с сервера WebDAV:

public static void getListFolder(List<String> listFolders, String url) throws Exception {
    HttpPropfind request = new HttpPropfind(url, DavConstants.PROPFIND_ALL_PROP, DavConstants.DEPTH_1);
    try (CloseableHttpResponse response = client.execute(request, context)) {
        MultiStatus multiStatus = request.getResponseBodyAsMultiStatus(response);
        MultiStatusResponse[] responses = multiStatus.getResponses();
        if (responses.length > 1) {
            for (int i = 1; i < responses.length; i++) {
                String href = responses[i].getHref().replace(getRootPath(), "");
                if (href.endsWith("/") && !href.contains("/.")) {
                    listFolders.add(href);
                    getListFolder(listFolders, ROOT_URL + href);
                }
            }
        }
    }
}

Но это занимает довольно много времени. Итак, мой вопрос: есть ли более быстрый и простой способ получить все каталоги?

Спасибо всем!

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете попробовать глубину бесконечности, но вы должны быть готовы к серверам, не поддерживающим его.

Также: почему вы используете "DavConstants.PROPFIND_ALL_PROP", когда все, что вас интересует, это URI?

FWIW, вы также делаете предположение о порядке следования в теле ответа, что может привести к неожиданным результатам. Кроме того, полагаться на косые черты может быть плохой идеей; вам действительно следует использовать свойство DAV: resourcetype.

...