发送json数据时出现badrequest

zd287kbt  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(341)

我尝试将json数据发送到api,但没有成功。
首先,数据是一个对象的列表,它第一次工作,这是因为数组是空的。
然而,第二次它试图发送时,我直接得到了一个400,甚至没有我的调试器进入控制器。
我怀疑我的json数据由于某种原因无法反序列化,这也是我的第二个怀疑,因为我的响应类型是application/problem+json。
然而,一切都可能是坚韧的。我已经尝试使用['frombody'],我已经尝试在json序列化器以及newtonsoft中构建。我已经尝试使用格式。意图,但都是运气。
在我的对象中有一个参数,一个字符串,可能会导致问题,因为它包含很多特殊字符-〉这个参数保存了一个目录的虚拟路径,所以它将包含'/'和''和空格和/或目录名中的其他特殊字符。
委托人:

using (HttpClient client = new HttpClient())
            {
                var message = new HttpRequestMessage();
                message.Content = JsonContent.Create(files, typeof(List<WatchedFile>));
                message.RequestUri = new Uri("http://localhost:5245/api/fileagent");
                message.Method = HttpMethod.Post;

                var response = await client.SendAsync(message);   
                
                if (!response.IsSuccessStatusCode)
                {
                    logger.LogError($"Sending to api was not successful {(int)response.StatusCode}");
                }
            }

这仍然需要重构,以便注入hhtpclient,而不是using语句。
控制器:

[HttpPost]
        public async Task<ActionResult> AddMessages([FromBody]List<WatchedFile> messages)
        {

            messages.ForEach(x => x.Ipaddress = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString());
            //send to repository                   
            await context.WatchedFiles.AddRangeAsync(messages);
            await context.SaveChangesAsync();
            return Ok();
        }
w41d8nur

w41d8nur1#

我会确保JSON实际上是一个有效的JSON。
然后尝试使用Postman将其发送到端点,看看是否得到预期的结果。
这至少可以帮助你消除一些可能出错的地方。

相关问题