Após a alteração que foi feita na quantidade de código que ficaria dentro do try catch, ele não está mais funcionando: Quando tento fazer um login sem rede, ao invés de exibir a mensagem de erro de comunicação, ele lança "System.NullReferenceException: Object reference not set to an instance of an object."
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using TestDrive.Views;
using Xamarin.Forms;
using System.Threading.Tasks;
using TestDrive.Models;
namespace TestDrive
{
public class LoginService
{
public async Task FazerLogin(Login login)
{
using (var cliente = new HttpClient())
{
var camposFormulario = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("email", login.email),
new KeyValuePair<string, string>("senha", login.senha)
});
cliente.BaseAddress = new Uri("https://aluracar.herokuapp.com");
HttpResponseMessage resultado = null;
try
{
resultado = await cliente.PostAsync("/login", camposFormulario);
}
catch
{
MessagingCenter.Send<LoginException>(new LoginException(@"Ocorreu um erro de comunicação com o servidor.
Por favor verifique sua conexão e tente novamente mais tarde."),
"FalhaLogin");
}
if (resultado.IsSuccessStatusCode)
MessagingCenter.Send<Usuario>(new Usuario(), "SucessoLogin");
else
MessagingCenter.Send<LoginException>(new LoginException("Usuário ou senha incorretos."), "FalhaLogin");
}
}
}
public class LoginException : Exception
{
public LoginException(string message) : base(message)
{
}
}
}