【问题标题】:Error creating DocuSign Envelope via DocuSign Rest API (with multiple documents and multiple recipients)通过 DocuSign Rest API 创建 DocuSign 信封时出错(包含多个文档和多个收件人)
【发布时间】: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 文件吗?

标签: json rest pdf docusignapi


【解决方案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,这是基于我之前发布的新主题,记得你的建议也很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多