我正在尝试通过Javascript使用DocuSign API请求签名。下面是我发送的多部分请求。问题是我收到错误回复:“信封不完整。完整的信封需要文档,收件人,标签和主题行。信封定义丢失。”很明显,我在我的请求中包含了“envelopeDefinition”xml,我很确定所有必需的元素都在那里。任何指导都将不胜感激。
--BOUNDARY--
Content-Type: application/xml
Content-Disposition: form-data
<envelopeDefinition xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docusign.com/restapi"><emailSubject>Test Subject</emailSubject><documents><name>document.pdf</name><documentId>1</documentId></documents><recipients><signers><tabs><signHereTabs><pageNumber>1</pageNumber><documentId>1</documentId><xPosition>100</xPosition><yPosition>100</yPosition></signHereTabs></tabs><routingOrder>1</routingOrder><recipientId>1</recipientId><name>My Name</name><email>email@email.com</email></signers></recipients><status>sent</status></envelopeDefinition>
--BOUNDARY--
Content-Type: application/pdf
Content-Disposition: file; filename="document.pdf"; documentId=1
[document bytes go here]
--BOUNDARY--
另外,我应该提到我正在使用Msxml2.XMLHTTP。
答案 0 :(得分:0)
如果没有看到请求标题,我不能绝对肯定你的问题是什么。但是,这里有一些建议:
首先,您的XML请求体似乎缺少几个元素。
添加&lt; document&gt; 元素作为&lt; documents&gt; 的子元素(即封装名称和 documentId 文档的元素)
添加&lt; signHereTab&gt; 元素作为&lt; signHereTabs&gt; 的子元素(即封装 pageNumber ,选项卡的 documentId , xPosition 和 yPosition 元素)
一旦您对XML进行了这些添加,您的请求应该更像这样:
POST https://demo.docusign.net/restapi/v2/accounts/201105/envelopes HTTP/1.1
X-DocuSign-Authentication: {"Username":"USERNAME","Password":"PASSWORD","IntegratorKey":"INTEGRATOR_KEY"}
Content-Type: multipart/form-data; boundary=BOUNDARY
Accept: application/xml
Host: demo.docusign.net
Content-Length: 23414
Expect: 100-continue
Connection: Keep-Alive
--BOUNDARY
Content-Type: application/xml
Content-Disposition: form-data
<envelopeDefinition xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.docusign.com/restapi">
<emailSubject>Test Subject</emailSubject>
<documents>
<document>
<name>document.pdf</name>
<documentId>1</documentId>
</document>
</documents>
<recipients>
<signers>
<tabs>
<signHereTabs>
<signHereTab>
<pageNumber>1</pageNumber>
<documentId>1</documentId>
<xPosition>100</xPosition>
<yPosition>100</yPosition>
</signHereTab>
</signHereTabs>
</tabs>
<routingOrder>1</routingOrder>
<recipientId>1</recipientId>
<name>My Name</name>
<email>email@email.com</email>
</signers>
</recipients>
<status>sent</status>
</envelopeDefinition>
--BOUNDARY
Content-Type: application/pdf
Content-Disposition: file; filename="document.pdf"; documentid="1"
[document bytes removed]
--BOUNDARY--
其次,您似乎在请求中使用了术语 BOUNDARY 作为您的部分分隔符 - 但您在所有三个位置都错误地使用了它: - -BOUNDARY - 即可。如上面我所包含的示例请求中所示,分隔符的前两个实例应该只在单词BOUNDARY之前有 - (连字符),就像这样:
--BOUNDARY
只有分隔符的最后一次出现(在请求的最后)应该有两个前导和尾随连字符:
--BOUNDARY--