Код контроллера (к примеру):
public async Task<string> Login(LoginModel model)
{
return model.Email;
}
Код LoginModel:
public class LoginModel
{
[JsonPropertyName("Email")]
public string Email { get; set; }
[JsonPropertyName("Password")]
public string Password { get; set; }
}
Отправляю вот так:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://localhost:44345");
HttpContent hs = new StringContent("{\"Email\":\"mail@mail.ru\",\"Password\":\"password\"} ", Encoding.UTF8, "application/json");
var response = client.PostAsync("Auth/Login", hs).Result;
В ответ получаю то, что вместо данных в Json попадают Null. Думал на счет того, чтобы передавать в void Login(string json)
, но тогда мне получается нужно будет отправлять Key "json" Value "Сам json", чего мне не хотелось бы делать... Или я что-то не так понимаю или дико с чем-то туплю.
Использовать x-www-form-urlencoded я умею, но мне нужно именно json.
У меня есть проект созданный из совершенно типового шаблонного проекта webapi (тот где по умолчанию подставляется ValueController, думаю видели), я на нём много экспериментировал с биндингами.
Вот полный пример.
Так должен выглядеть код контроллера:
using Microsoft.AspNetCore.Mvc;
namespace WebApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AsdfController : ControllerBase
{
[HttpPost]
public ActionResult<string> Method([FromBody] Request request)
{
return $"post, value1={request.Value1}, value2={request.Value2}.";
}
}
public class Request
{
public int Value1 { get; set; }
public string Value2 { get; set; }
}
}
Вот так код клиента в linqpad:
void Main()
{
var unit = new WebRequestHelper();
// Post samples as json
unit.PostAsync("https://localhost:44323/api/asdf", "{\"Value1\":5,\"Value2\":\"asdf\"}")
.Result.Dump(); // Expected: post, value1=5, value2=asdf.
unit.PostAsync("https://localhost:44323/api/asdf", JsonConvert.SerializeObject(new { Value1 = 1, Value2 = "asdf", }))
.Result.Dump(); // Expected: post, value1=5, value2=asdf.
// Free for your samples
}
И сам хелпер:
public class WebRequestHelper
{
public async Task<string> PostAsync(string uri, string jsonString)
{
var client = new HttpClient();
var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
var response = await client.PostAsync(uri, content);
return await response.Content.ReadAsStringAsync();
}
}
Пробуйте, вам в комментариях всё верно отписали, осталось только сложить аккуратно всё воедино. Модель свою подставите вместо анонимной, там просто обычный класс с геттерами и сеттерами. Можете даже убрать атрибуты JsonPropertyName
они в вашем случае избыточны, т.к. конвенциональны.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
На машине x64 Windows 7 установил MS VS 2019 Professional, вместе установил и "ASPNET
Пишу программу вывода графика работы врачей на телевизорГрафик работы сохраняю в БД
Чтобы убрать трение при столкновении со стенами я добавлял колайдеру персонажа физический материал и в нём убирал Friction на 0, но из-за отсутсвия...