我試圖通過Timeout屬性在API中通過演示網址在Docusign中上傳文檔。但有時api調用會返回「遠程服務器返回錯誤:(400)錯誤請求」。我看着小提琴手的調試軌跡。 XML顯示2件事是錯誤代碼和消息「1. errorCode:HOURLY_APIINVOCATION_LIMIT_EXCEEDED。2.消息:每小時API調用的最大數量已超出,小時限制爲1000」。。但是我只能連續上傳15到20個電話。之後,不好的請求將開始。再次開始上傳一段時間後。我無法上傳Fidler XML圖像。它表明它需要10張聲望才能發佈圖像。Docusign上傳API調用返回遠程服務器返回一個錯誤:(400)錯誤的請求
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();
您是否可以更新您的問題以發佈完整的XML請求追蹤? (您可以使用Fiddler或類似方法輕鬆生成跟蹤。)上面顯示的代碼不會顯示整個請求,因此很難確切知道導致錯誤的原因。 –
你是說有時候這個調用成功了,有時候當你提到「但是有時候api調用會返回400個錯誤的請求」,它有時會失敗嗎?如果是這樣的話,它可能實際上是DocuSign服務器的一個問題,而不是你的代碼,即使你得到了400.本週早些時候有一些問題,即400個服務器出現問題,但我相信那些現在解決了,生產總是比演示環境更穩定... – Ergin
感謝您的時間金。我查看了Fidler跟蹤,它顯示錯誤消息,如「每小時調用的最大數量已超出,小時限制爲1000」。但我連續做了10到15個電話。之後,它開始顯示「壞請求」消息。 –