我们正在使用Python和Requests库使用REST API v2的Add document
方法将PDF添加到DocuSign信封中:
response = requests.put(
'<base URL>/envelopes/<envelope ID>/documents/<next document ID>',
files={'document': <the PDF file object>}, # <- added to the request's body
headers=self._get_headers(
{
'Content-Disposition': 'document; filename="the-file.pdf";'
}
),
timeout=60
)
在大多数情况下,这对我们有用,除了通过API不接受大约1/100的PDF。出现此问题时,我们会告诉用户直接通过DocuSign UI上传PDF,该UI可以正常运行。这促使我们(在支持的帮助下)查看上面链接的Add document
页面上示例请求上方显示的Document params
链接。该页面显示documentBase64
属性和许多其他字段。如何以此格式提供文档,并指定所有字段?我应该用files={'document': <JSON-encoded object>}
或上面的电话替换上面通话中的文件吗?我无法弄清楚如何添加文档,而不是我们目前的方式。我还有另一种方法吗?
答案 0 :(得分:3)
现在看来有两种不同的方法可以使用REST API将文档添加到Draft Envelope:
使用多部分请求,其中第一部分包含JSON正文,每个后续部分包含文档的字节 - 以 未编码格式 。 REST API指南(http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf)的第136-137页显示了此方法的一个示例。
使用普通请求(即非多部分请求),并以
根据您在问题中包含的信息,我怀疑您目前正在使用方法#1。如上所述,两种方法之间的主要区别在于请求的一般结构,并且ALSO - 方法#1期望文档字节是未编码的,而方法#2期望文档字节是base64编码的。我怀疑你的问题与文件编码有关。即,如果您使用方法#1并且任何文件都已编码,您可能会遇到问题。