我正在编写一种递归方法,以从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);
}
}
}
}
}
但是要花很长时间。 所以我的问题是:有没有更快,更轻松的方法来获取所有目录?
谢谢!
答案 0 :(得分:0)
您可以尝试深度无限,但是您必须为不支持深度无限的服务器做好准备。
另外:当您只对URI感兴趣时,为什么还要使用“ DavConstants.PROPFIND_ALL_PROP”?
FWIW,您还假设响应主体中的排序可能会导致令人惊讶的结果。另外,依靠斜杠可能不是一个好主意。您确实应该使用DAV:resourcetype属性。