Docusign:尝试从 UI5 应用程序的模板 ID 创建信封时出现 400 错误 "Unable to parse multipart body"
Docusign : 400 Error "Unable to parse multipart body" when trying to create envelope from Template ID from UI5 application
我们正在尝试弄清楚 Docusign
是否可以用于满足我们客户要求的生产方案。
我们有一个 UI5 应用程序,将用于签署文档。我们在 Docusign
.
的演示实例中创建了一个模板
然而,当我们尝试从应用程序创建信封时,我们得到 400 Error
Unable to parse multipart body
。现在,在 POSTMAN 应用程序中使用相同的有效负载会导致成功创建信封。传的headers也是一样
在 Ui5 应用中:
var settings = {
"async": true,
"crossDomain": true,
"url": "/docusign/envelopes",
"method": "POST",
"timeout": 0,
"headers": {
"Authorization": "User DnVj27euWrCi4ANoMV5puvxVxYAcUCG3PlkUSpWpC08=, Organization 6ba64ce816dec995b17d04605e329a30, Element X4XuUq/T5UUh2o9xwaamZCCRwOKUCPr1Kv1Nj+qHPj0=",
"Content-Type": "application/json"
},
"data": JSON.stringify({
"status": "sent",
"compositeTemplates": [{
"compositeTemplateId": "1",
"inlineTemplates": [{
"recipients": {
"signers": [{
"email": "johndoe@testmail.com",
"name": "John Doe",
"recipientId": "1",
"roleName": "Signer",
"clientUserId": "12345",
"tabs": {
"textTabs": [{
"tabLabel": "firstName",
"value": "John"
}, {
"tabLabel": "lastName",
"value": "Doe"
}, {
"tabLabel": "phoneNo",
"value": "022-635363"
}, {
"tabLabel": "email",
"value": "test@gmail.com"
}]
}
}]
},
"sequence": "1"
}],
"serverTemplates": [{
"sequence": "1",
"templateId": "0bf97611-a457-4e8e-ac7e-1593c17ba3f6"
}]
}]
})
};
var deferred = $.Deferred();
$.ajax(settings).done(function (response) {
deferred.resolve(response);
}.bind(this)).fail(function (error) {
deferred.reject(error);
}.bind(this));
在邮递员中:
如果能帮助解决这个问题,我们将不胜感激。
你能否在 json 设置之外进行字符串化,或许在将所有内容放入设置之前将你的调用分解一下。
即尝试重新调整您的 jquery ajax 调用:
var headers = {"Authorization": "User DnVj27euWrCi4ANoMV5puvxVxYAcUCG3PlkUSpWpC08=, Organization 6ba64ce816dec995b17d04605e329a30, Element X4XuUq/T5UUh2o9xwaamZCCRwOKUCPr1Kv1Nj+qHPj0=", "Content-Type": "application/json" };
var payload = JSON.stringify({
"status": "sent",
"compositeTemplates": [{
"compositeTemplateId": "1",
"inlineTemplates": [{
"recipients": {
"signers": [{
"email": "johndoe@testmail.com",
"name": "John Doe",
"recipientId": "1",
"roleName": "Signer",
"clientUserId": "12345",
"tabs": {
"textTabs": [{
"tabLabel": "firstName",
"value": "John"
}, {
"tabLabel": "lastName",
"value": "Doe"
}, {
"tabLabel": "phoneNo",
"value": "022-635363"
}, {
"tabLabel": "email",
"value": "test@gmail.com"
}]
}
}]
},
"sequence": "1"
}],
"serverTemplates": [{
"sequence": "1",
"templateId": "0bf97611-a457-4e8e-ac7e-1593c17ba3f6"
}]
}]
});
$.ajax({
"async": true,
"crossDomain": true,
"url": "/docusign/envelopes",
"method": "POST",
"timeout": 0,
"headers": headers,
"data": payload
});
我相信这会引导您找到最终的 "consolidated" 答案。
如果从 Postman 和 UI5 应用程序发送 完全相同 JSON,那么您会得到相同的结果。但你不是,所以有些不同。
可能 UI5 系统将 API 作为 MIME 多部分请求发送,但未正确设置 JSON 请求部分的内容类型。
验证:使用 DocuSign API logger 查看 DocuSign 收到的内容。比较从 UI5 和 Postman 发送的请求。
解决方法:您需要设置额外的 UI5 参数,这样请求就不会作为多部分 MIME 消息发送。或者发送包含所需设置的多部分消息。见 docs and see a multi-part example.
PS 请 post 回答您的问题并提供问题的解决方案(一旦您找到它),以便将来帮助其他人。谢谢!!
我能够通过直接使用 Docusign API (https://demo.docusign.net/restapi/v2/accounts) 来解决问题。我之前使用 SAP Openconnector 连接到 Docusign。
https://api.openconnectors.eu3.ext.hanatrial.ondemand.com/elements/api-v2
感谢大家的帮助。
我们正在尝试弄清楚 Docusign
是否可以用于满足我们客户要求的生产方案。
我们有一个 UI5 应用程序,将用于签署文档。我们在 Docusign
.
然而,当我们尝试从应用程序创建信封时,我们得到 400 Error
Unable to parse multipart body
。现在,在 POSTMAN 应用程序中使用相同的有效负载会导致成功创建信封。传的headers也是一样
在 Ui5 应用中:
var settings = {
"async": true,
"crossDomain": true,
"url": "/docusign/envelopes",
"method": "POST",
"timeout": 0,
"headers": {
"Authorization": "User DnVj27euWrCi4ANoMV5puvxVxYAcUCG3PlkUSpWpC08=, Organization 6ba64ce816dec995b17d04605e329a30, Element X4XuUq/T5UUh2o9xwaamZCCRwOKUCPr1Kv1Nj+qHPj0=",
"Content-Type": "application/json"
},
"data": JSON.stringify({
"status": "sent",
"compositeTemplates": [{
"compositeTemplateId": "1",
"inlineTemplates": [{
"recipients": {
"signers": [{
"email": "johndoe@testmail.com",
"name": "John Doe",
"recipientId": "1",
"roleName": "Signer",
"clientUserId": "12345",
"tabs": {
"textTabs": [{
"tabLabel": "firstName",
"value": "John"
}, {
"tabLabel": "lastName",
"value": "Doe"
}, {
"tabLabel": "phoneNo",
"value": "022-635363"
}, {
"tabLabel": "email",
"value": "test@gmail.com"
}]
}
}]
},
"sequence": "1"
}],
"serverTemplates": [{
"sequence": "1",
"templateId": "0bf97611-a457-4e8e-ac7e-1593c17ba3f6"
}]
}]
})
};
var deferred = $.Deferred();
$.ajax(settings).done(function (response) {
deferred.resolve(response);
}.bind(this)).fail(function (error) {
deferred.reject(error);
}.bind(this));
在邮递员中:
如果能帮助解决这个问题,我们将不胜感激。
你能否在 json 设置之外进行字符串化,或许在将所有内容放入设置之前将你的调用分解一下。
即尝试重新调整您的 jquery ajax 调用:
var headers = {"Authorization": "User DnVj27euWrCi4ANoMV5puvxVxYAcUCG3PlkUSpWpC08=, Organization 6ba64ce816dec995b17d04605e329a30, Element X4XuUq/T5UUh2o9xwaamZCCRwOKUCPr1Kv1Nj+qHPj0=", "Content-Type": "application/json" };
var payload = JSON.stringify({
"status": "sent",
"compositeTemplates": [{
"compositeTemplateId": "1",
"inlineTemplates": [{
"recipients": {
"signers": [{
"email": "johndoe@testmail.com",
"name": "John Doe",
"recipientId": "1",
"roleName": "Signer",
"clientUserId": "12345",
"tabs": {
"textTabs": [{
"tabLabel": "firstName",
"value": "John"
}, {
"tabLabel": "lastName",
"value": "Doe"
}, {
"tabLabel": "phoneNo",
"value": "022-635363"
}, {
"tabLabel": "email",
"value": "test@gmail.com"
}]
}
}]
},
"sequence": "1"
}],
"serverTemplates": [{
"sequence": "1",
"templateId": "0bf97611-a457-4e8e-ac7e-1593c17ba3f6"
}]
}]
});
$.ajax({
"async": true,
"crossDomain": true,
"url": "/docusign/envelopes",
"method": "POST",
"timeout": 0,
"headers": headers,
"data": payload
});
我相信这会引导您找到最终的 "consolidated" 答案。
如果从 Postman 和 UI5 应用程序发送 完全相同 JSON,那么您会得到相同的结果。但你不是,所以有些不同。
可能 UI5 系统将 API 作为 MIME 多部分请求发送,但未正确设置 JSON 请求部分的内容类型。
验证:使用 DocuSign API logger 查看 DocuSign 收到的内容。比较从 UI5 和 Postman 发送的请求。
解决方法:您需要设置额外的 UI5 参数,这样请求就不会作为多部分 MIME 消息发送。或者发送包含所需设置的多部分消息。见 docs and see a multi-part example.
PS 请 post 回答您的问题并提供问题的解决方案(一旦您找到它),以便将来帮助其他人。谢谢!!
我能够通过直接使用 Docusign API (https://demo.docusign.net/restapi/v2/accounts) 来解决问题。我之前使用 SAP Openconnector 连接到 Docusign。 https://api.openconnectors.eu3.ext.hanatrial.ondemand.com/elements/api-v2
感谢大家的帮助。