1
resposta

Erro no try catch após a alteração

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)
        {
        }
    }
}
1 resposta

Olá Nilton, tudo bem?

Ainda está com o problema? Nas próximas aulas essa parte do try..catch será resolvida de outra forma.

No aguardo!