C# HttpClient PostAsync列表<;字符串>;而不是file.csv
我正在尝试向供应商发布内容。当我将数据保存到.csv并引用该文件时,数据上传。我更愿意做的是跳过将文件保存到磁盘,只上传数据。我似乎不知道如何正确地序列化数据 以下是数据:C# HttpClient PostAsync列表<;字符串>;而不是file.csv,c#,dotnet-httpclient,C#,Dotnet Httpclient,我正在尝试向供应商发布内容。当我将数据保存到.csv并引用该文件时,数据上传。我更愿意做的是跳过将文件保存到磁盘,只上传数据。我似乎不知道如何正确地序列化数据 以下是数据: csv.Add(string.Join(",", "sara1234", "Ancient World Studies-1201A1-01")); csv.Add(string.Join(",", "jazzy4567", "Ancient World Studies-1201A1-01")); 以下是上传: protec
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;
}
有什么建议吗?您可以构建CSV字符串并将其传递给StringContent的新实例,而不是使用ByteArrayContent。您的供应商希望如何接收数据?作为一个
字节[]
?我假设当HttpClient将该文件作为一个文件提取时,它是以字节[]的形式发送的,但我不确定。他们希望我们使用cURL,我们不希望这样做。我知道你不希望这样做,但如果你不符合他们期望的类型,你将看不到上传的数据。如果我引用磁盘上的.csv文件,它将拾取文件并通过HttpClient接受数据。我的假设是数据是一个字节数组。从供应商端我可以看到,jSON缺少行提要。我可以用内存流来做这个吗?
string jsonFile = JsonConvert.SerializeObject(file);
HttpContent contentPost = new StringContent(jsonFile, Encoding.UTF8, "application/json");
content.Add(contentPost, "uploadFile", "student.csv");