WebAPI学习笔记(4)Asp.net调用WebAPI Post方法获取附件
1、WebAPI方法:
public HttpResponseMessage GetAttachmentList() { HttpResponseMessage result = null; try {string fileName1 = "Test001.txt"; string fileName2 = "Test002.pptx"; string fileName3 = "Test003.zip"; string TempFileSavePath = ConfigurationHelper.GetDownloadFileDefaultSavePath(); byte[] bytes1 = MethodHelper.FileToByte(HttpContext.Current.Server.MapPath(TempFileSavePath + fileName1)); byte[] bytes2 = MethodHelper.FileToByte(HttpContext.Current.Server.MapPath(TempFileSavePath + fileName2)); byte[] bytes3 = MethodHelper.FileToByte(HttpContext.Current.Server.MapPath(TempFileSavePath + fileName3)); List<AttachmentModel> attachmentList = new List<AttachmentModel>(); attachmentList.Add(new AttachmentModel(fileName1, bytes1)); attachmentList.Add(new AttachmentModel(fileName2, bytes2)); attachmentList.Add(new AttachmentModel(fileName3, bytes3)); result = MethodHelper.GetHttpResponseMessage(ConvertJson.List2Json<AttachmentModel>(attachmentList)); } catch (Exception ex) { } return result; }
public static HttpResponseMessage GetHttpResponseMessage(string content) { return new HttpResponseMessage { Content = new StringContent(content, Encoding.GetEncoding("UTF-8"), "application/json") }; }
2、调用方式:
//测试附件 string Username = "xxx"; string Password = "xxx"; using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Username}:{Password}"))); HttpContent httpContent = new StringContent("", Encoding.UTF8); httpContent.Headers.Add("user-key", "xxx"); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); Uri address = new Uri("https://localhost:44300/api/issues/GetAttachmentList"); var response = client.PostAsync(address, httpContent).Result.Content.ReadAsStringAsync().Result;//返回值 List<AttachmentModel> list = JsonConvert.DeserializeObject<List<AttachmentModel>>(response); if (list != null) { for (int i = 0; i < list.Count; i++) { string filePath = HttpContext.Current.Server.MapPath("Temp/" + list[i].fileName); ByteToFile(list[i].bytes, filePath); } } }