文档签名上传 api 调用返回远程服务器返回错误:(400) 错误请求



我尝试使用超时属性通过API的演示URL在Docusign中上传文档。但有时 api 调用会返回"远程服务器返回错误:(400) 错误请求"。我查看了小提琴手调试跟踪。XML显示2件事是错误代码和消息"1。错误代码:HOURLY_APIINVOCATION_LIMIT_EXCEEDED。 2. 消息:已超过每小时 API 调用的最大数量。每小时限制为 1000"。但是我可以连续上传大约 15 到 20 个电话。之后,错误的请求将开始。一段时间后,它再次开始上传。我无法上传 Fidler XML 映像。它表明它需要 10 个声誉才能发布图像。

string envdef = "<envelopeDefinition xmlns="http://www.docusign.com/restapi">" + envDef;
string temp = Environment.ExpandEnvironmentVariables("%temp%");
FileStream fileStream = System.IO.File.OpenRead(path);
// build the multipart request body
string requestBodyStart = "rnrn--BOUNDARYrn" +
    "Content-Type: application/xmlrn" +
    "Content-Disposition: form-datarn" +
        "rn" +
        envdef + "rnrn--BOUNDARYrn" + // our xml formatted envelopeDefinition
    "Content-Type: application/x-www-form-urlencodedrn" +
    "Content-Disposition: file; filename="CaptionBookmarkTest - 214744463.doc"; documentId=1rn" +
    "rn";
string requestBodyEnd = "rn--BOUNDARY--rnrn";
// use baseURL value + "/envelopes" for url of this request
request.Timeout = 1000000;
request = (HttpWebRequest)WebRequest.Create(baseURL + "/envelopes");
request.Headers.Add("X-DocuSign-Authentication", authenticateStr);
request.ContentType = "multipart/form-data; boundary=BOUNDARY";
request.Accept = "application/xml";
request.ContentLength = requestBodyStart.ToString().Length + fileStream.Length + requestBodyEnd.ToString().Length;
request.Method = "POST";
// write the body of the request
byte[] bodyStart = System.Text.Encoding.UTF8.GetBytes(requestBodyStart.ToString());
byte[] bodyEnd = System.Text.Encoding.UTF8.GetBytes(requestBodyEnd.ToString());
Stream dataStream = request.GetRequestStream();
dataStream.Write(bodyStart, 0, requestBodyStart.ToString().Length);
// Read the file contents and write them to the request stream
byte[] buf = new byte[4096];
int len;
while ((len = fileStream.Read(buf, 0, 4096)) > 0)
{
    dataStream.Write(buf, 0, len);
}
dataStream.Write(bodyEnd, 0, requestBodyEnd.ToString().Length);
dataStream.Close();
// read the response
request.MaximumAutomaticRedirections = 4;
webResponse = (HttpWebResponse)request.GetResponse();
sr.Close();
responseText = "";
sr = new StreamReader(webResponse.GetResponseStream());
responseText = sr.ReadToEnd();
StreamWriter SW;
SW = System.IO.File.CreateText(temp + "\upload.XML");
SW.WriteLine(responseText);
SW.Close();
sr.Close();

DocuSign 有 API 调用限制 - 每个帐户每小时只能调用 1000 次 API。 看起来您正在达到此限制,这种情况很少见,因此我很好奇您如何以及为什么在不到 1 小时内拨打这么多电话。

小时窗口不是滑动窗口,而是从每个小时的顶部到下一个小时的开始。 因此,例如,在下午 3 点到 4 点之间,您不能在给定帐户中进行超过 1000 次 api 调用。

请注意,这不仅适用于签名请求 api 调用,也适用于您针对 DocuSign 服务器进行的任何 api 调用。 因此,如果您进行登录 api 调用来检索您的 baseUrl 和 accountId,则计为一次调用。 然后,如果您将该 baseUrl 用于后续签名请求或其他 api 调用,则计为 2,依此类推。

Docusign正在尝试联系您的网站,但一小时内失败了1000多次,从而达到了极限。 要解决此问题,请重新启动站点的应用程序池,并在新小时开始后再次重新测试或检查错误日志。 如果之后仍有问题,请检查最新的 Web 代码是否存在错误。

相关内容

  • 没有找到相关文章

最新更新