使用 dropBox-sdk-java 获取 Dropbox 中现有文件的共享链接

get the sharedlink of an existing file in Dropbox using the dropBox-sdk-java

我想检索 Dropbox 上现有文件的共享文件 url。我正在使用 dropbox-java-sdk,我已经成功地为我刚刚上传的文件创建了一个共享 link。我设法获取现有文件的共享 link 的唯一方法是列出所有 link 并根据路径获取我想要的文件,例如

public void getShareLink(String path) throws DbxApiException, DbxException{
        DbxRequestConfig config = new DbxRequestConfig("test/DbApi-sdk");
        DbxClientV2 client = new DbxClientV2(config, getToken(AuthorizationFile));
        
        try {
            ListSharedLinksResult sharedLinkMetadata = client.sharing().listSharedLinks();
            for (SharedLinkMetadata slm:    sharedLinkMetadata.getLinks()){
                if(slm.getPathLower().equalsIgnoreCase(path)){
                     System.out.println(slm.getUrl());
                     return;
                }
            }
        } catch (CreateSharedLinkWithSettingsErrorException ex) {
            System.out.println(ex);
        } catch (DbxException ex) {
            System.out.println(ex);
        }
        
    }

有没有办法直接获取我想要的文件的url?我只是认为迭代所有项目只是为了获得其中一项是一种浪费。

获取 ListSharedLinksBuilder from listSharedLinksBuilder and set ListSharedLinksBuilder.withDirectOnly 以仅请求指定确切路径的链接:

public String getShareLink(String path) {
    DbxRequestConfig config = new DbxRequestConfig("test/DbApi-sdk");
    DbxClientV2 client = new DbxClientV2(config, getToken(AuthorizationFile));
    try {
        ListSharedLinksResult sh = client.sharing().listSharedLinksBuilder()
                .withPath(path)
                .withDirectOnly(true)
                .start();
        for (SharedLinkMetadata slm : sh.getLinks()) {
            return slm.getUrl();
        }
    } catch (CreateSharedLinkWithSettingsErrorException ex) {
        System.out.println(ex);
        return null;
    } catch (DbxException ex) {
        System.out.println(ex);
        return null;
    }
    return null;
}