简体   繁体   中英

HttpClient PostAsync List<string> instead of file.csv

I am attempting to post content to a vendor. The data uploads when I save my data to a .csv then reference the file. What I would prefer to do is skip saving the file to disk and just upload the data. I can't seem to figure out how to serialize the data correctly.

Here is the data:

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

Here is the upload:

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;
}

I have tried what's shown below (instead of the file from disk). I get a 200 success message back, but data does not load. Specifically, the first method returns a message that the students were not found (this is good because I know the data was evaluated), the second returns no message at all.

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

Any suggestions?

您可以只构建CSV字符串并将其传递给StringContent的新实例,而不使用ByteArrayContent。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM