API에서 데모 URL을 통해 Docusign에서 문서를 업로드 할 때 Timeout 속성을 사용하려고했습니다. 그러나 때로는 API 호출이 "원격 서버가 오류를 반환했습니다 : (400) 잘못된 요청"을 반환합니다. 나는 fiddler 디버그 추적을 조사했습니다. 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 요청의 전체 추적을 게시 할 수 있습니까? 위의 코드는 전체 요청을 표시하지 않으므로 오류의 원인을 정확히 알기가 어렵습니다. –
때때로 "호출이 400 개의 잘못된 요청을 반환하는 경우"라고 말하면 때때로 호출이 성공하고 때때로 실패합니다. 그렇다면 실제로는 DocuSign의 서버에서 문제가 될 수 있으며 코드가 400 개라도 문제가되지는 않습니다. 이번 주 초에 서버 문제가 있어도 400 개가 반환되는 문제가있었습니다. 그것들은 지금 해결되었고, 제작은 데모 환경보다 항상 안정적이었습니다. ... – Ergin
시간 내 주셔서 감사합니다. 나는 Fidler 추적을 통해 "최대 호출 시간 초과가 초과되었습니다 .1 시간 제한은 1000"과 같은 오류 메시지를 보았습니다. 그러나 나는 약 10-15 번의 전화를 연속적으로했다. 그 후 "나쁜 요청"메시지가 표시되기 시작했습니다. –