Docusign REST API不会将base64文档发送到Java客户端

时间:2018-04-15 22:50:42

标签: docusignapi

这令我感到困惑。

我可以用curl请求文档内容为base64,没问题。

curl  https://demo.docusign.net/restapi/v2/accounts/<id>/envelopes/<id>/documents<id> -H"Authorization : Bearer <token>" -H "Content-Transfer-Encoding: base64" -o <filename>

返回标题

Content-Disposition: file; filename="blah"; documentid="1"
Content-Transfer-Encoding: base64

,文件以base64格式返回。

使用下面使用HttpURLConnection的Apache oltu oauth2库我无法获得在base 64中发送的响应。我将请求标头设置为

Content-Transfer-Encoding: base64
Accept : */* 
Authorisation : Bearer <token> 

但我得到的所有内容都是该文件的二进制版本,它最终会被炸毁,因为该库将流保存为字符串,这会破坏PDF文件。

我无法跟踪返回标头,但请求标头肯定已设置上述字段。

Docusign端点中是否有任何内容可以查看User-Agent或其他任何内容以确定是否执行base 64编码?为什么它只会返回二进制流呢?

2 个答案:

答案 0 :(得分:1)

我怀疑您的Java输出不一样,确认这一点的最佳方法是通过遵循本DocuSign支持文章https://support.docusign.com/guides/ndse-user-guide-api-request-logging中解释的步骤,捕获您的API调用通过Java发布到DocuSign的确切JSON / SOAP请求

请发布这些,我相信我们将能够推断出图书馆&#34;添加&#34;那就是改变实际的输出。

答案 1 :(得分:1)

好的,感谢@david提供有关在docusign中记录请求的建议。我发现&#34;转移内容编码&#34;标头在到达Docusign服务器时神秘地消失了。一些挖掘表明

一个。无论如何,对于非电子邮件用途而言,这个标题是狡猾的

湾在Java HttpUrlConnection类中,它被删除了#34;作为安全措施。您可以显然设置一些标志以恢复到以前的行为。见https://bugs.openjdk.java.net/browse/JDK-6996110

在任何情况下,我通过实现一个类来解决问题,该类将响应读作InputStream而不用担心base64。

希望这有助于Java OAuth库用户在他们的生活中挽救他们的头撞墙!