fabiopires1011
Power Member
Boas , estou a desenvolver um jogo com a framework Monogame. Neste momento, estou a tentar chamar o método de Login que tenho na minha Api porém recebo sempre uma exceção.
Através de prints na consola consegui chegar à conclusão que o try é interrompido nesta linha response = await client.GetStringAsync(builder.Uri.AbsoluteUri);
O que estou a fazer mal?
Em baixo deixo a minha chamada à Api
e o meu endopoint de Login na Api
Através de prints na consola consegui chegar à conclusão que o try é interrompido nesta linha response = await client.GetStringAsync(builder.Uri.AbsoluteUri);
O que estou a fazer mal?
Em baixo deixo a minha chamada à Api
Código:
public static async Task<User> Login(string username, string password)
{
string response;
User user = null;
try
{
var builder = new UriBuilder(Uri + "User/Login")
{
Port = Port
};
builder.Query = $"Username={username}&Password={password}";
Debug.WriteLine("REACHED AFTER BUILDER.QUERY");
response = await client.GetStringAsync(builder.Uri.AbsoluteUri);
Debug.WriteLine("REACHED AFTER RESPONSE=");
if (response == "Ok")
{
user = JsonConvert.DeserializeObject<User>(response);
}
}
catch (Exception ex)
{
Debug.WriteLine("\tERROR {0}", ex.Message);
}
return user;
}
e o meu endopoint de Login na Api
Código:
[HttpPost("Login")]
public IActionResult Authenticate([FromBody]AuthenticateModel userModel)
{
var user = _userService.Authenticate(userModel.Username, userModel.Password);
if(user == null)
{
return BadRequest(new { message = "Username or Password invalid" });
}
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.Name, user.Id.ToString())
}),
Expires = DateTime.UtcNow.AddDays(7),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
var tokenString = tokenHandler.WriteToken(token);
return Ok(new
{
Id = user.Id,
UserName = user.Username,
Token = tokenString
}) ;
}