Как опубликовать данные в HTTP-заголовке MVC в веб-API метод POST
Я создаю прототип приложения, в котором я пытаюсь отправить данные в заголовке и теле запроса из контроллера C# MVC, а также создал действие Post project web api для обработки запроса.
Мой код звучит примерно так::
Код проекта MVC для отправки запроса:
public class HomeController : Controller { public async Task<ActionResult> Index() { VM VM = new VM(); VM.Name = " TEST Name"; VM.Address = " TEST Address "; using (var client = new HttpClient()) { client.BaseAddress = new Uri("http://localhost:58297"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("username","test"); var json = JsonConvert.SerializeObject(VM); var content = new StringContent(json, Encoding.UTF8, "application/json"); var result1 = await client.PostAsync("api/Values/Post", content); } return View(); } }
Мой код в проекте WEB API :
// POST api/values public IHttpActionResult Post([FromBody]API.VM vm) { try { HttpRequestMessage re = new HttpRequestMessage(); StreamWriter sw = new StreamWriter(@"E:\Apple\txt.log", false); var headers = re.Headers; string token = ""; if (headers.Contains("username")) { token = headers.GetValues("username").First(); } sw.WriteLine("From header" + token); sw.WriteLine("From BODY" + vm.Name); sw.WriteLine("From BODY" + vm.Address); sw.WriteLine("Line2"); sw.Close(); return Ok("Success"); } catch (Exception ex) { return InternalServerError(ex); } }
Как я понял это [FromBody]интерфейс API.ВМ ВМ получает данные из тела запроса HTTP, который означает, что объект виртуальной машины получаю данные из тела запроса HTTP.Я могу получить тело запроса. Я не могу понять, как передать данные в заголовке из контроллера MVC (я хочу передать данные JSON) и получить данные в методе WEB Api post?
Что я уже пробовал:
Я уже использовал
client.DefaultRequestHeaders.Add("username","test");в проекте MVC для передачи данных заголовка и
HttpRequestMessage re = new HttpRequestMessage(); var headers = re.Headers; string token = ""; if (headers.Contains("username")) { token = headers.GetValues("username").First(); }
в проекте WEB API для получения данных, но я не могу получить значение имени пользователя,