首页 > 解决方案 > #APIDocusign 400 在本地正常工作时对生产提出错误请求

问题描述

我正在以 xml 格式进行 API 调用。使用 url 作为http://www.docusign.net/restapi/v2/login_information和生产凭据详细信息,我正在检索 accountID 和 Baseurl 然后我尝试以 xml 格式请求信封结果,如下所示

字符串 requestBody = "http://www.docusign.com/restapi\">" +

            "<accountId>" + accountId + "</accountId>" +

                    "<status>sent</status>" +

                    "<emailSubject>API Call for Embedded Sending</emailSubject>" +

                    "<emailBlurb>This comes from C#</emailBlurb>" +

                    "<templateId>" + templateId + "</templateId>" +

                    "<templateRoles>" +

                    "<templateRole>" +

                    "<email>" + username + "</email>" + // NOTE: Use different email address if username provided in non-email format!

                       "<name>Name</name>" +         // username can be in email format or an actual ID string

                    "<roleName>" + roleName + "</roleName>" +



                    "</templateRole>" +

                    "</templateRoles>" +

                    "</envelopeDefinition>";

然后我正在打电话

请求 = (HttpWebRequest)WebRequest.Create(baseURL + "/envelopes");

            request.Headers.Add("X-DocuSign-Authentication", authenticateStr);

            request.ContentType = "application/xml";

            request.Accept = "application/xml";

            request.ContentLength = requestBody.Length;

            request.Method = "POST";

            // write the body of the request

            byte[] body = System.Text.Encoding.UTF8.GetBytes(requestBody);

            Stream dataStream = request.GetRequestStream();

            dataStream.Write(body, 0, requestBody.Length);

            dataStream.Close();

            // read the response

            webResponse = (HttpWebResponse)request.GetResponse();

在最后一行,它给出了 400 bad request 的错误。

这适用于模拟帐户,但在生产帐户中会出现 400 错误。感谢所有试图帮助我的人。

标签: apidocusignapi

解决方案


如果您的代码在演示环境中运行但在生产环境中失败,这可能与身份验证相关或与您的帐户设置相关(在演示或产品中)。我怀疑它与身份验证有关。

我看到您正在使用/login_information端点使用较旧的旧式身份验证。当您在演示中发出登录请求时,baseUrl 始终demo.docusign.net是该环境中唯一的子域。

但是,对于生产而言,您的帐户可能存在于多个子域之一中,具体取决于您创建帐户时的位置和其他一些因素。我看到您使用www.docusign.net适用于登录 API 的生产端点,但您的集成需要做的是解析baseUrl响应中返回的内容并将其用作核心 API 请求的基础。

例如,您的生产帐户可能位于以下域之一中:

na2.docusign.net
na3.docusign.net
eu.docusign.net
...

再次验证您的集成应该将哪个子域用于生产解析baseUrl从登录 API 返回的内容并将其用于后续请求。


推荐阅读