发送json数据时 badrequest



我正在尝试将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}");
}
}

这仍然需要重构以注入httpclient,而不是在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();
}

我会确保JSON实际上是一个有效的JSON。

然后你试着用Postman发送它到你的端点,看看你是否得到了预期的结果。

这至少可以帮助你消除一些可能出错的地方。

最新更新