HTTPClient以WebAPI方式发送formData数据上传文件

Net以WebAPI形式发送fromData格式的数据上传文件,示例代码如下:

 public static async Task<HttpResponseMessage> HttpPostFileAsync(string url, BearerToken token, BillReconcileFileTenant billReconcile, string filePath)
        {
            using (var httpClient = new HttpClient() { BaseAddress = new Uri(baseAddress) })
            {
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Authorization
                           = new AuthenticationHeaderValue("Bearer", token.access_token);
                using (Stream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {
                    MultipartFormDataContent formData = new MultipartFormDataContent();
                    formData.Add(new StringContent(billReconcile.TenantName), "\"TenantName\"");// 使用"\"来转义
                    formData.Add(new StringContent(billReconcile.BillDate), "\"BillDate\"");
                    formData.Add(new StringContent(billReconcile.Count.ToString()), "\"Count\"");
                    formData.Add(new StringContent(billReconcile.Amount.ToString()), "\"Amount\"");
                    formData.Add(new StreamContent(fileStream, (Int32)fileStream.Length), "Data", billReconcile.FileName);
                    HttpResponseMessage response = await httpClient.PostAsync(url, formData);
                    if (!response.IsSuccessStatusCode)
                    {
                        LogUtil.Error($"{DateTime.Now.ToString()}对账接口对账失败,返回状态码为:{Convert.ToInt32(response.StatusCode)}");
                    }
                    else
                    {
                        LogUtil.Info($"{DateTime.Now.ToString()}对账接口Post请求成功,返回状态码为:{Convert.ToInt32(response.StatusCode)}");
                    }
                    return response;
                }
            }
        }

注意:BaseAddress和url使用时是BaseAddress+url为请求地址再去使用。

posted @ 2020-11-27 17:02  Arainzhe  阅读(532)  评论(0编辑  收藏  举报