Как выполнить вызов POST API REST из консольного приложения?
Я хочу передать класс из консольного приложения в API REST. Мой код ниже работает, если я должен сделать вызов GET, но не для POST. Он бьет по API, но в параметре ничего не передает.
API
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
//public void Post([FromBody]string value)
//{
//}
public void Post([FromBody]Student value)
{
}
}
Консольное приложение
static async Task CallWebAPIAsync()
{
var student = new Student() { Id = 1, Name = "Steve" };
using (var client = new HttpClient())
{
//Send HTTP requests from here.
client.BaseAddress = new Uri("http://localhost:58847/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.PostAsJsonAsync("api/values", student);
if (response.IsSuccessStatusCode)
{
}
else
{
Console.WriteLine("Internal server Error");
}
}
}
То же самое работает, если я звоню из fiddler.
Пользователь-агент: Fiddler Длина содержимого: 31 Хост: localhost: 58847 Тип содержимого: application / json
Тело запроса: {"Id": "1", "Имя": "Рохит"}