一直返回400错误,The JSON value could not be converted to Smis.Entity.BasicModel.B_Institution
1 var httpclinet = _httpClientFactory.CreateClient(); 2 3 httpclinet.DefaultRequestHeaders.Accept.Clear(); 4 httpclinet.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 5 6 string json = CommonLibrary.Json.ObjectToJson(w_Institution); 7 8 HttpContent httpContent = new JsonContent(json); 9 10 var response = httpclinet.PostAsync("http://localhost:85/api/ApplyInstitution", httpContent); 11 12 if (response == null || response.IsCompleted) { 13 obj.Code = "205"; 14 return obj; 15 } 16 var data = response.Result.Content.ReadAsStringAsync().Result;
这个问题解决了。需要引入Microsoft.AspNetCore.Mvc.NewtonsoftJson这个包,然后在加上 services.AddControllers().AddNewtonsoftJson();
但之后接口获取到了json字符串就变成{\\\"ID\\\":0,\\\"UserID\\\":0,\\\"PlatformLogo\\\":\\\"string\\\"}这种了,无法转换成对象
将HttpContent httpContent = new JsonContent(json);修改为 JsonContent jsonContent = new JsonContent(RavenJToken.Parse(json));就行了
400 Bad Request 是由于明显的客户端错误(例如,格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求。 在ajax 请求后台数据时比较常见。
也就是说,你的 httpContent 不符合后台的预期。
我是把外部接口所需要的对象转换成json字符串 在传给它的