http请求使用multipart/form-data 方式上传文件和其它参数
最近再和客户软件对接的时候,被要求用form-data格式传参调用API接口,之前一般只用XML,JSON格式,第一次用form-data,找了几篇文章,发现许多文章的实例代码太复杂,最后黄天不负有心人,找到了一个简单的范例,干净利落脆,秒懂。代码如下:
HttpClient httpClient = new HttpClient();
string path = "http://192.168.88.100:81/api/basic/PostTemplate";//API接口调用网址
MultipartFormDataContent form = new MultipartFormDataContent();//创建form-data类型
//StringContent:存字符串类型 ByteArrayContent :存byte类型(文件)
form.Add(new StringContent("测试机台2"), "machineName");//测试机台2:值 machineName:栏位名称(Key)
form.Add(new StringContent("任务4"), "taskTemplateName");
form.Add(new StringContent("2"), "equipmentSerial");
form.Add(new StringContent("任务模板400"), "templateName");
form.Add(new StringContent("JT"), "fileType");
form.Add(new StringContent("67B57884EA331AC6"), "md5CheckCode");
ByteArrayContent bb = new ByteArrayContent(File.ReadAllBytes(@"C:\Users\111\Desktop\斑马打印机设置IO卡.JT"));//读取文件byte放在 ByteArrayContent 类型中
form.Add(bb, "files", "斑马打印机设置IO卡.JT");//bb:文件byte,files:栏位名称,斑马打印机设置IO卡.JT:文件名称(服务器端直接读此名称,这样就可以解决读取字节流无法知道文件名称的问题)
HttpResponseMessage response = await httpClient.PostAsync(path, form);
response.EnsureSuccessStatusCode();
httpClient.Dispose();
string sd = response.Content.ReadAsStringAsync().Result;//请求结果转为字串
参考网址:https://cloud.tencent.com/developer/ask/sof/1315215/answer/1815274