将字符串发布到Rest API会导致400错误请求

时间:2019-11-28 12:13:39

标签: json rest asp.net-core bad-request .net-core-2.2

发送带有转换为HttpContent的 json 对象的发布请求,但结果是400错误的请求。

发件人

HttpClient _client = new HttpClient();
_client.DefaultRequestHeaders.Accept.Clear();
_client.DefaultRequestHeaders.Accept
               .Add(new MediaTypeWithQualityHeaderValue("application/json"));

var jsonObject = new JObject(new JProperty("id", Id), new JProperty("image", face));
var strJson = JsonConvert.SerializeObject(jsonObject);
var response = _client.PostAsync(_settings.Uri, 
                   new StringContent(strJson, Encoding.UTF8, "application/json"));

接收器

[HttpPost]
public IActionResult Post([FromBody]string value)

请问如何克服400错误的建议?

2 个答案:

答案 0 :(得分:1)

您的通话中似乎有一个多余的括号

var response = _client.PostAsync(_settings.Uri, (new StringContent(strJson, Encoding.UTF8, "application/json"));

尝试先将其删除。

欢呼

答案 1 :(得分:1)

您当前的代码发送了一个序列化为json对象,而ASP.NET Core操作则期望序列化为json string 。最简单的解决方案是重复数据序列化

var objectJson = JsonConvert.SerializeObject(jsonObject);
var stringJson = JsonConvert.SerializeObject(objectJson);
var response = _client.PostAsync(_settings.Uri, new StringContent(stringJson, Encoding.UTF8, "application/json"));