Вызов Docusign REST API - терминатор границы не найден

Я пытаюсь вызвать Docusign REST API, как описано в разделе «Шаг 3: отправка запроса на подпись от имени пользователя 2» в этом ссылка. Я получаю следующую ошибку ниже. Какая должна быть граница? Как мне его правильно установить?

{"errorCode": "INVALID_MULTI_PART_REQUEST", "message": "Ошибка при анализе составного запроса. Ограничитель границы '--BOUNDARY; charset = utf-8--' не был найден в запросе." }

public static string HttpRequest(string url, List<CELPHttpHeader> headerList, EnvelopeDefinition envelopeDefination)
{
    string responseString = string.Empty;

    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Add("accept", "application/json");

    MediaTypeHeaderValue mediaType = new MediaTypeHeaderValue("multipart/form-data");   
    NameValueHeaderValue item = new NameValueHeaderValue("boundary", "BOUNDARY");
    mediaType.Parameters.Add(item);

    JsonMediaTypeFormatter formatter = new JsonMediaTypeFormatter();

    HttpRequestMessage requestMessage = new HttpRequestMessage();
    requestMessage.Method = HttpMethod.Post;
    requestMessage.Content = new ObjectContent<EnvelopeDefinition>(envelopeDefination, formatter, mediaType);

    foreach (CELPHttpHeader header in headerList)
    {
        client.DefaultRequestHeaders.Add(header.Name, header.Value);
    }

    try
    {
        Task<HttpResponseMessage> webTaskResult = client.PostAsync(url, requestMessage.Content);
        webTaskResult.Wait();
        HttpResponseMessage response = webTaskResult.Result;
    }
    catch (Exception ex)
    {

    }

    return (responseString);
}

person Community    schedule 31.03.2016    source источник
comment
См. Ответ Луиса ниже - я думаю, что граница в вашем запросе неправильно закодирована. The; charset = utf-8 похоже, что он исходит из другого параметра. Граница должна быть отделена от заголовков частей с помощью разделителя строк, а не точки с запятой.   -  person Jeff Kyllo    schedule 04.04.2016
comment
Спасибо, Джефф, я решил, что проблема в том, что EnvelopeDefination имеет неправильный формат, а также неправильный формат многостраничного запроса.   -  person    schedule 05.04.2016


Ответы (1)


Фрагмент того, как должен выглядеть запрос API, приведен ниже:

--BOUNDARY

Content-Type: application/json
Content-Disposition: form-data

{
   <JSON request here>
}

--BOUNDARY
Content-Type: application/pdf
Content-Disposition: file; filename="test1.pdf"; documentid=1
Content-Transfer-Encoding: base64

JVBERi0xLjUNJeLjz9MNCjMwMDIgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgMTM1
  <snipped>
V1sxIDMgMF0+PnN0cmVhbQ0KaN5iYhRZU8PEwCDsBCQY1wMJpicAAQYAHeIDMQ0K
ZW5kc3RyZWFtDWVuZG9iag1zdGFydHhyZWYNCjEzNjA0NjUNCiUlRU9GDQo=

--BOUNDARY--
person Luis Scott    schedule 02.04.2016