首页 > 解决方案 > 如何从 DocuSign 的信封中下载文档?

问题描述

我需要使用 DocuSign 的其余服务从信封下载文档。

我正在使用的系统是 Javascript,但使用的是 Java 圣经。

我正在通过 java.net.URL 调用该方法,但无法获取要在系统上使用的文件字节。

我试图读取返回的 InputStream,但这不会返回带有 base64 的 XML。

var url = new java.net.URL('https://demo.docusign.net/restapi/v2.1/accounts/0c2ddaae-e258-4ade-a435-e4ee50fd2542/envelopes/c60565e2-40d9-43f3-bb2d-58e086c20fca/documents/1');
        var connection = url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("GET");
        
        connection.setRequestProperty("X-DocuSign-Authentication", '{"Username":"user","Password":"password=","IntegratorKey": "guid"}');
        connection.setRequestProperty("content-type", "text/xml;charset=UTF-8");

if(connection.getResponseCode() == 200){
            try{
                var retorno = new java.io.BufferedReader(new java.io.InputStreamReader(connection.getInputStream()));
                var retData = new java.lang.StringBuilder();
                var line;
                while((line = retorno.readLine()) != null){
                    retData.append(line);
                }
            
                var strData = retData.toString();

当我使用 SoapUi 时,我收到:JVBERi0xLjQKJfv8/blablalblalblalba

但在我的代码中,我收到如下内容:

HTTP/1.1 200 OK 缓存控制:无缓存内容长度:122448

内容类型:application/pdf X-RateLimit-Reset:1561921200

X-RateLimit-限制:1000 X-RateLimit-剩余:955

X-DocuSign-TraceToken:c5710b05-b13c-460f-b04a-1e683471934e

内容处置:文件;文件名=空白1.pdf;documentid=1 日期:

格林威治标准时间 2019 年 6 月 30 日星期日 18:51:47

标签: javarestdocusignapi

解决方案


您使用EnvelopeDocuments::get API 方法。

请参阅代码示例

请参阅Java 示例实现

请注意,它documentId可以是信封中特定文档的 id,也可以是保留值之一:

  • combined-- 将下载一个包含所有信封文件的 PDF
  • archive-- 将下载一个 zip 文件。

您的代码示例意味着您正在尝试通过流式传输目标数据来优化下载。这些天,内存便宜(真实的和虚拟的),我建议你简单地将文档下载到内存中,然后处理它。

如有必要,您可以稍后优化以使用流。


推荐阅读