首页 新闻 搜索 专区 学院

.net core 调用外部api接口

0
悬赏园豆:15 [已解决问题] 解决于 2020-08-07 11:49

一直返回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\\\"}这种了,无法转换成对象

请假一天的主页 请假一天 | 初学一级 | 园豆:25
提问于:2020-08-07 10:24
< >
分享
最佳答案
0

将HttpContent httpContent = new JsonContent(json);修改为  JsonContent jsonContent = new JsonContent(RavenJToken.Parse(json));就行了

请假一天 | 初学一级 |园豆:25 | 2020-08-07 11:47
其他回答(1)
0

400 Bad Request 是由于明显的客户端错误(例如,格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求。 在ajax 请求后台数据时比较常见。

也就是说,你的 httpContent 不符合后台的预期。

收获园豆:15
爱编程的大叔 | 园豆:30753 (高人七级) | 2020-08-07 10:31

我是把外部接口所需要的对象转换成json字符串 在传给它的

支持(0) 反对(0) 请假一天 | 园豆:25 (初学一级) | 2020-08-07 10:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册