Я занимаюсь разработкой API в mvc asp.net core для онлайн-бронирования. Но когда я пытаюсь добавить резервирование из метода публикации API, я получаю сообщение об ошибке:
WebException: удаленный сервер возвратил ошибку: (415) Unsupported
Тип носителя. System.Net.HttpWebRequest.GetResponse ()
Есть 2 проекта:
Проект 1
В моем методе действия API есть метод post с атрибутом [FromBody]. Я должен вызвать этот метод и передать объект бронирования.
Определение метода:
[HttpPost]
public Reservation Post([FromBody] Reservation res) =>
repository.AddReservation(new Reservation
{
Name = res.Name,
FromLocation = res.FromLocation,
ToLocation = res.ToLocation
});
Проект 2
В проекте 2 я хочу вызвать этот метод API. Для этого я создал форму в виде, чтобы заполнить имя, от местоположения и до значений местоположения. Затем на контроллере я должен вызвать метод API (приведенный выше).
Код контроллера:
[HttpPost]
public IActionResult AddReservation(Reservation reservation)
{
HttpWebRequest apiRequest = WebRequest.Create("http://localhost:8888/api/Reservation") as HttpWebRequest;
apiRequest.Method = "Post";
string parameters = "Name=" + reservation.Name + "Image=" + reservation.Image + "&FromLocation=" + reservation.FromLocation + "&ToLocation=" + reservation.ToLocation;
byte[] byteArray = Encoding.UTF8.GetBytes(parameters);
apiRequest.ContentType = "application/x-www-form-urlencoded";
apiRequest.ContentLength = byteArray.Length;
// Add the post data to the web request
Stream postStream = apiRequest.GetRequestStream();
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
string apiResponse = "";
using (HttpWebResponse response = apiRequest.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
apiResponse = reader.ReadToEnd();
}
return RedirectToAction("Index");
}
Я получаю ошибку - WebException: удаленный сервер возвратил ошибку: (415) Unsupported Media Type.
System.Net.HttpWebRequest.GetResponse ()
Но когда я запускаю команду powershell, она работает:
PM> Invoke-RestMethod http://localhost:8888/api/Reservation -Method POST -Body (@{Name="Anne"; ToLocation="Meeting Room 4"} | ConvertTo-Json) -ContentType "application/json"
Пожалуйста, помогите?