这令我感到困惑。
我可以用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编码?为什么它只会返回二进制流呢?
答案 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库用户在他们的生活中挽救他们的头撞墙!