0

APIからのデモURLを介してDocusignでドキュメントをアップロードするためのタイムアウトプロパティを試しました。しかし、API 呼び出しで「The remote server returned an error: (400) Bad Request」が返されることがあります。フィドラーのデバッグ トレースを調べました。XML は、エラーコードとメッセージ「1. errorCode : HURLY_APIINVOCATION_LIMIT_EXCEEDED. 2. Message : The Maximum no of hourly API Invocations has been exceeded. The hourly limit is 1000」の 2 つを示しています。. しかし、連続してアップロードできるのは 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 = "\r\n\r\n--BOUNDARY\r\n" +
    "Content-Type: application/xml\r\n" +
    "Content-Disposition: form-data\r\n" +
        "\r\n" +
        envdef + "\r\n\r\n--BOUNDARY\r\n" + // our xml formatted envelopeDefinition
    "Content-Type: application/x-www-form-urlencoded\r\n" +
    "Content-Disposition: file; filename=\"CaptionBookmarkTest - 214744463.doc\"; documentId=1\r\n" +
    "\r\n";

string requestBodyEnd = "\r\n--BOUNDARY--\r\n\r\n";
// 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();
4

2 に答える 2

1

DocuSign には API 呼び出しの制限があり、 1 アカウントあたり 1 時間あたり 1000 回の API 呼び出しに制限されています。この制限に達しているようですが、これはめったにありません。1 時間以内にこれほど多くの電話をかける方法と理由を知りたいと思います。

時間ウィンドウはスライディング ウィンドウではなく、各時間の先頭から次の時間の開始までです。したがって、たとえば、午後 3 時から午後 4 時の間に、特定のアカウントで 1000 を超える API 呼び出しを行うことはできません。

これは、署名リクエストの API 呼び出しだけでなく、DocuSign のサーバーに対して行うすべての API 呼び出しであることに注意してください。そのため、baseUrl と accountId を取得するために Login API 呼び出しを行う場合、それは 1 回の呼び出しとしてカウントされます。その後、その baseUrl を後続の署名リクエストまたは他の API 呼び出しに使用すると、それは 2 としてカウントされます。

于 2013-10-30T22:18:40.853 に答える