Я создаю прототип приложения, в котором я пытаюсь отправить данные в заголовке и теле запроса из C # MVC Controller, а также создал проект web api Post для обработки запроса.
Мой код выглядит так:
Код проекта 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.VM vm получает данные из тела запроса Http, что означает, что объект vm получает данные из тела HTTP-запроса. Я могу получить тело запроса. Я не могу понять, как передать данные в заголовке из контроллера MVC (я хочу передать данные JSON) и получить данные в методе WEB Api post?
Я использовал client.DefaultRequestHeaders.Add ("имя пользователя", "тест"); в проекте MVC для передачи данных заголовка и
HttpRequestMessage re = new HttpRequestMessage();
var headers = re.Headers;
string token = "";
if (headers.Contains("username"))
{
token = headers.GetValues("username").First();
}
в проекте WEB API для получения данных, но я не могу получить значение имени пользователя.