在Angular中使用以上方式调用:
function Login(email, password, callback)
{
var GetAll = new Object();
GetAll.email = email;
GetAll.password = email;
$http({
url: "http://localhost:52587/api/TokenAuth/Login",
dataType: 'json',
method: 'post',
data: JSON.stringify(GetAll),
headers: {
'Content-Type': 'application/json'
}
})
.then(function loginSuccessCallback(response)
{...
我使用swagger和ajax进行了测试,效果很好。我在体内设置了json对象(设置为raw和JSON(application / json))。
我编写了以下Web API:
namespace WEBAPI.Controllers
{
public class user
{
public string email { get; set; }
public string password { get; set; }
}
[Produces("application/json")]
[Route("api/[controller]")]
public class TokenAuthController : Controller
{
[HttpPost("Login")]
public async Task`<IActionResult>` Login([FromBody]user usr)
{
..................
..................
}
}
}
但我得到[FromBody] 415不支持的媒体类型和 没有[FromBody]获取null参数。请帮帮我 谁知道我哪里出错?
答案 0 :(得分:2)
没有必要JSON.stringify您的数据,因为您真正需要的是一个JSON对象。将您的数据作为字符串肯定会得到415(不支持的媒体类型)错误。 你可以这样做
$http({
url: "http://localhost:52587/api/TokenAuth/Login",
dataType: 'json',
method: 'post',
data: GetAll,
headers: {
'Content-Type': 'application/json'
}
})
.then(function loginSuccessCallback(response)
答案 1 :(得分:0)
您可以尝试添加accept
标题
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}