我看过How do I replace curl invoke with HttpClient object invoke or some similar?,但它没有回答我的问题。我的供应商给出了以下cURL命令,其中包含一些可选参数以及使用CRON作业运行它的说明。发送CSV我的C#代码通过HttpClient生成而不是将CSV丢弃到某个地方并通过CRON作业业务似乎更有效率。我正在编写的C#将成为我们现有的自动化服务的一部分。
这是cURL:
curl -F "passkey=<PASS KEY>" -F "uploadFile=@<PATH_TO_YOUR_CSV_FILE>" https://td-setup.xxxxxx.com/<DOMAIN NAME>/csvupload
我想要使用一个loadAll参数。
我已经通过NuGet将Microsoft.Net.Http -Version 2.2.22添加到我的项目中,现在发现自己不确定下一步该怎么做。可悲的是,这是我所得到的更多:
string baseAddress = String.Format("{0}/{1}/{2}", taskConfig.Upload.BaseUrl, domain.Username, taskConfig.Upload.UploadLocation);
using (HttpClient client = new HttpClient)
{
}
我通常喜欢在向她求助之前表现出更多的努力,但我在头脑中。我该如何开始?添加密码? loadAll参数?
答案 0 :(得分:3)
curl -F
选项表示根据RFC 2388使用multipart/form-data
内容类型的POST数据。
所以你需要创建一个MultipartFormDataContent
对象:
var formDataContent= new MultipartFormDataContent();
将密码字符串附加到其中:
// passkey is the param name from the curl script
formDataContent.Add(new HttpStringContent("yourpasswordhere"), "passkey");
将CSV文件内容附加到其中:
byte[] csvBytes = File.ReadAllBytes("yourcsvfile.csv");
var csvContent = new ByteArrayContent(csvBytes);
// uploadFile is the param name specified in the curl script
formDataContent.Add(csvContent, "uploadFile", "filename.csv");
你不能解释如何在curl中使用loadAll参数,但是假装它是假的&#39; /&#39; false&#39;字符串参数:
formDataContent.Add(new HttpStringContent("true"), "loadAll");
最后发布表格:
string url = "https://td-setup.xxxxxx.com/<DOMAIN NAME>/csvupload";
var client = new HttpClient();
await client.PostAsync(url, formDataContent);