Загрузите двоичный файл с помощью HttpClient, используя поток октетов - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь загрузить файл, используя httpClient в качестве потока октетов

  1. Предоставляется следующая документация
  2. HTTP Verb => POST
  3. Content – ​​Type => application / octet-stream
  4. Accept => application / json
  5. Авторизация => Носитель {токен доступа}
  6. x-file-name => Тестовый файл.pdf
  7. x-convert-document (необязательно) => true
  8. x-source => источник (может быть любой строкой)
  9. Тело запроса => file (двоичный поток)

Примечание: в моем коде ниже заголовки Accept и Bearer и их значения уже присутствуют в клиенте, который я загружаю с помощью "await GetRestClientAsync ()"

Я ожидаю ответ, но пока я ничего не получаю, приложение просто останавливается, что я тут не так делаю?

Ps: Другие сообщения, запросы к этому API нормально работают с тем же клиентом, который я здесь использую, так что, скорее всего, я что-то напутал с MultiPartFormDataContent

 protected async Task<TResponse> ExecutePostAsBinaryCustomHeadersAsync<TResponse>(Uri apiUri, Stream fileStream, string fileName ,bool returnDefaultObjectForInternalServerError = false)
    {
        using (var formData = new MultipartFormDataContent())
        {
            formData.Add(new StringContent(fileName), "x-file-name");
            formData.Add(new StringContent("true"), "x-convert-document");
            formData.Add(new StringContent("Agion"), "x-source");
            formData.Add(new StringContent("application/octet-stream"), "Content-Type");

            using (var client = await GetRestClientAsync())
            {
                StreamContent content = new StreamContent(fileStream);
                formData.Add(content, "file", fileName);

                using (var response = await client.PostAsync(apiUri, formData))
                {

                    return await DeserializeResponseAsync<TResponse>(response, returnDefaultObjectForInternalServerError); 
                }

            }
        }
    }
...