c# – 如何使用HttpClient将JSON数据发布到Web API
发布时间:2020-12-15 23:48:19 所属栏目:百科 来源:网络整理
导读:我有以下代码,基本上它接受一个动态对象(在这种情况下是类型文件)并使用HTTPClient类尝试POST到WebAPI控制器,我遇到的问题是控制器始终为NULL获取我的[FromBody]参数的值. 码 var obj = new { f = new File { Description = description,File64 = Convert.To
我有以下代码,基本上它接受一个动态对象(在这种情况下是类型文件)并使用HTTPClient类尝试POST到WebAPI控制器,我遇到的问题是控制器始终为NULL获取我的[FromBody]参数的值.
码 var obj = new { f = new File { Description = description,File64 = Convert.ToBase64String(fileContent),FileName = fileName,VersionName = versionName,MimeType = mimeType },} var client = new HttpClient(signingHandler) { BaseAddress = new Uri(baseURL + path) //In this case v1/document/checkin/12345 }; client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response; action = Uri.EscapeUriString(action); //Obj is passed into this,currently it is of type File var content = new StringContent(JsonConvert.SerializeObject(obj).ToString(),Encoding.UTF8,"application/json"); response = client.PostAsync(action,content)).Result; if (response.IsSuccessStatusCode) { var responseContent = response.Content; string responseString = responseContent.ReadAsStringAsync().Result; return JsonConvert.DeserializeObject<T>(responseString); } 调节器 [HttpPost] [Route("v1/document/checkin/{id:int}")] public void Checkin_V1(int id,[FromBody] File f) { //DO STUFF - f has null on all of its properties } 模型 public class File { public string FileName { get; set; } public string VersionName { get; set; } public string Description { get; set; } public string MimeType { get; set; } public byte[] Bytes { get; set;} public string File64 { get; set; } } 该模型在WebAPI和客户端应用程序上共享. 任何关于为什么失败的帮助都会非常感激,现在已经在圈子里走了一段时间. 解决方法
不需要你在开始时的obj.那就是将f嵌套在另一个对象中.
var obj = new { f = new File { Description = description,MimeType = mimeType },} 改成 var f = new File { Description = description,MimeType = mimeType }; 然后只序列化f. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |