Я использую Visual Studio 2022 для разработки программы Winforms, и Visual Studio сообщила об ошибке http 400 при вызове веб-API.
Вот код:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request. Referer = Referer;
byte[] bytes = Encoding.UTF8.GetBytes(Data);
request.ContentType = "application/json";
request.ContentLength = bytes.Length;
Stream myResponseStream = request.GetRequestStream();
myResponseStream.Write(bytes, 0, bytes.Length);
HttpWebResponse response = (HttpWebResponse) request.GetResponse(); //error
Ошибка:
System.Net.WebException: «Удаленный сервер вернул ошибку: (400) неверный запрос.
Это мой контроллер веб-API:
[Route("api/MyWebApi")]
[ApiController]
public class MyWebApiController : ControllerBase
{
private readonly ILogger<MyWebApiController> _logger;
public MyWebApiController(ILogger<MyWebApiController> logger)
{
_logger = logger;
}
[HttpPost("[action]")]
public IActionResult SayHello([FromBody] UserModel model)
{
if (model.pwd != "1")
{
object obj = new
{
code = "0",
msg = "Request failed"
};
return new JsonResult(obj);
//return new BadRequestResult();
}
else
{
object obj = new
{
code = "1",
msg = "Request successful"
};
return new JsonResult(obj);
}
}
}
Я попробовал это ASP.NET Web Api HttpResponseException 400 (неверный запрос), перехваченный IIS, и, похоже, это не работает. Кто-нибудь может мне помочь?
Данные определяются как параметр строкового типа в методе post static, я не думаю, что в этом есть что-то особенное
@BilinVance Можете ли вы подробно рассказать мне, какие данные вы передали? Можно привести пример для иллюстрации. проблема скорее всего там
Вы имеете в виду, что переданные данные неверны?
@BilinVance Да, потому что я заметил, что ваш ContentType — это application/json. Затем вы не можете использовать строку или int при передаче данных, вам нужно поддерживать согласованность типа данных. Вы можете обратиться к Как превратить объект C# в строку JSON в .NET?
Спасибо за ваш ответ, я решил это. Как вы сказали, есть проблема с типом передаваемых данных. Я уже обработал json
@BilinVance Я разместил комментарий в качестве ответа. Если это полезно для вас, вы можете отметить это, чтобы это могло помочь большему количеству людей





Потому что я заметил, что ваш ContentType — это application/json. Затем вы не можете использовать строку или int при передаче данных, вам нужно поддерживать согласованность типа данных. Вы можете обратиться к Как превратить объект C# в строку JSON в .NET?
Как выглядят ваши данные? Ваш пример кода не содержит данных, которые вы публикуете.