我尝试将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();
}
1条答案
按热度按时间w41d8nur1#
我会确保JSON实际上是一个有效的JSON。
然后尝试使用Postman将其发送到端点,看看是否得到预期的结果。
这至少可以帮助你消除一些可能出错的地方。