通过 DocuSign Rest API 创建 DocuSign 信封时出错(包含多个文档和多个收件人)

Posted

技术标签:

【中文标题】通过 DocuSign Rest API 创建 DocuSign 信封时出错(包含多个文档和多个收件人)【英文标题】:Error creating DocuSign Envelope via DocuSign Rest API (with multiple documents and multiple recipients) 【发布时间】:2013-12-28 21:28:47 【问题描述】:

我正在尝试使用 DocuSign REST API 在包含多个文档的 DocuSign 中创建一个信封,我正在使用多部分/表单数据请求,我使用 JSON 来定义信封的属性,我检查了我的 JSON,然后我认为没关系。在此之下,我定义了一个多部分/混合部分,在其中设置文档的标题和 PDF 字节。我收到一个错误的请求错误代码,上面写着“NO_DOCUMENT_RECEIVED”,并有消息“文档元素不包含编码的文档,或者编码有问题。”。我在下面发布了 fiddler 的请求结果:

// 请求

POST https://demo.docusign.net/restapi/v2/accounts/295724/envelopes HTTP/1.1
X-DocuSign-Authentication: "Username":"email","Password":"password","IntegratorKey":"key"
Content-Type: multipart/form-data; boundary=9a56da749dc04804819460f6499ab80b
Accept: application/json
Host: demo.docusign.net
Content-Length: 31476
Expect: 100-continue

--9a56da749dc04804819460f6499ab80b
Content-Type: application/json
Content-Disposition: form-data

"emailBlurb":"EMAIL BODY HERE OK OK","emailSubject":"EMAIL SUBJECT HERE IS MANDATORY","status":"sent","documents":["documentId":1,"name":"ABC.pdf","documentId":2,"name":"AB.pdf"],"recipients":"signers":["email":"dn@brenock.com","name":"Dubhe","recipientId":"1","routingOrder":"1","email":"dubhe.dnacimiento@gmail.com","name":"DubheF","recipientId":"2","routingOrder":"1"]
--9a56da749dc04804819460f6499ab80b
Content-Disposition: form-data
Content-Type: multipart/mixed; boundary=e8bc9555e9634110bba63547b2552460

--e8bc9555e9634110bba63547b2552460
Content-Type: application/pdf
Content-Disposition: file; filename=ABC.pdf; documentId=1

<PDF Bytes Document 1>
--e8bc9555e9634110bba63547b2552460
Content-Type: application/pdf
Content-Disposition: file; filename=AB.pdf; documentId=2

<PDF BytesDocument Two>
--e8bc9555e9634110bba63547b2552460--
--9a56da749dc04804819460f6499ab80b--

【问题讨论】:

嗯,表面上我没有看到任何明显错误,您确定内容长度值设置正确吗?你也肯定这两个文件都是有效的 PDF 文件吗? 【参考方案1】:

您不应该需要这些定义第二个边界的行(或对该第二个边界的任何后续引用):

Content-Disposition: form-data
Content-Type: multipart/mixed; boundary=e8bc9555e9634110bba63547b2552460

尝试删除它(以及所有后续对边界 e8bc9555e9634110bba63547b2552460 的引用),以便您的请求如下所示:

POST https://demo.docusign.net/restapi/v2/accounts/295724/envelopes HTTP/1.1
X-DocuSign-Authentication: "Username":"email","Password":"password","IntegratorKey":"key"
Content-Type: multipart/form-data; boundary=9a56da749dc04804819460f6499ab80b
Accept: application/json
Host: demo.docusign.net
Content-Length: 31476
Expect: 100-continue

--9a56da749dc04804819460f6499ab80b
Content-Type: application/json
Content-Disposition: form-data

JSON_REQUEST_BODY_HERE
--9a56da749dc04804819460f6499ab80b
Content-Type:application/pdf
Content-Disposition: file; filename="ABC.pdf"; documentid=1 

DOCUMENT_1_BYTES_HERE
--9a56da749dc04804819460f6499ab80b
Content-Type:application/pdf
Content-Disposition: file; filename="AB.pdf"; documentid=2 

DOCUMENT_2_BYTES_HERE
--9a56da749dc04804819460f6499ab80b--

【讨论】:

有趣,我最近实际测试了这个,并且使用两个边界和问题中的多部分/混合标题成功地工作。我还没有机会测试您在此处列出的方式,明天将这样做...... 嗯...我从来没有像问题所示那样测试过两个边界。我一直按照我在回答中建议的方式进行操作,而且它一直对我有用——昨晚又进行了一次测试以确认。只是在请求标头中指定了一个边界,然后是一个多部分消息,其中每个部分前面都有边界 - 第一部分包含 JSON 正文,每个后续部分包含文档的字节。 Kim Brandl 感谢您的大力帮助,经过一周的尝试和错误,我终于让我的代码成功运行。还要感谢@Ergin,这是基于我之前发布的新主题,记得你的建议也很有帮助。

以上是关于通过 DocuSign Rest API 创建 DocuSign 信封时出错(包含多个文档和多个收件人)的主要内容,如果未能解决你的问题,请参考以下文章

从docusign REST API收集与安全相关的事件吗?

Docusign REST API无法启动

如何在 Postman 中过滤来自 Docusign Rest API 的报告结果

Docusign REST API:使用 Microsoft Flow 的 JWT Grant 实现 OAuth 身份验证

为什么说GraphQL可以取代REST API?

当我们进行API调用时,Docusign会保留发送文档的副本吗 - eSignRestAPI?