HttpClient PostAsync List <string> вместо file.csv

1

Я пытаюсь опубликовать контент для поставщика. Загрузка данных, когда я сохраняю свои данные в.csv, затем ссылается на файл. То, что я бы предпочел сделать, это пропустить сохранение файла на диск и просто загрузить данные. Я не могу понять, как правильно сериализовать данные.

Вот данные:

csv.Add(string.Join(",", "sara1234", "Ancient World Studies-1201A1-01"));
csv.Add(string.Join(",", "jazzy4567", "Ancient World Studies-1201A1-01"));

Вот выгрузка:

protected async Task<bool> RunAsync(string baseAddress, IEnumerable<string> file, string passkey)
{
    byte[] csvBytes = File.ReadAllBytes("C:\\Projects\\AutomationServiceFiles\\DataMig_Test\\Drop\\Hapara\\HaparaStudent.csv");
    var csvContent = new ByteArrayContent(csvBytes);

    using (var client = new HttpClient())
    {
        using (var content = new MultipartFormDataContent())
        {
            content.Add(new StringContent(passkey), "passkey");
            content.Add(csvContent, "uploadFile", "student.csv");

            var response = await client.PostAsync(baseAddress, content);
            response.EnsureSuccessStatusCode();
            string returnedContent = await response.Content.ReadAsStringAsync();
        }                
    }
    return true;
}

Я попробовал то, что показано ниже (вместо файла с диска). Я получаю сообщение об успешности 200, но данные не загружаются. В частности, первый метод возвращает сообщение о том, что ученики не были найдены (это хорошо, потому что я знаю, что данные были оценены), второй не возвращает никакого сообщения вообще.

string jsonFile = JsonConvert.SerializeObject(file);
HttpContent contentPost = new StringContent(jsonFile, Encoding.UTF8, "application/json");
content.Add(contentPost, "uploadFile", "student.csv");

Какие-либо предложения?

  • 0
    Как ваш поставщик ожидает получить данные? как byte[] ?
  • 0
    Я бы предположил, что когда HttpClient выбирает файл как файл, он отправляет его как байт [], но я не уверен. Они ожидают, что мы будем использовать cURL, что мы бы предпочли не делать.
Показать ещё 2 комментария
Теги:
dotnet-httpclient

1 ответ

0

Вы можете просто построить CSV-строку и передать ее в новый экземпляр StringContent вместо использования ByteArrayContent.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню