Как вывести сообщение об ошибке Rest API? - PullRequest
0 голосов
/ 06 августа 2020

В настоящее время я разрабатываю мобильное приложение, использующее Rest API.

Я почти закончил, но хотел знать, как отобразить сообщение об ошибке (в DisplayAlert), запрограммированное в API, которое возвращается, когда ошибка в приложении.

Не знаю, как это сделать. Пожалуйста, помогите мне в этом отношении?

EDIT : Вот код, который я использую для регистрации, например

private async void BtnApply_Clicked(object sender, EventArgs e)
{
   ApiService apiService = new ApiService();
   bool response = await apiService.RegisterUser(EntName.Text, EntFirstName.Text, PickerGender.Items[PickerGender.SelectedIndex], EntPhone.Text, EntEmail.Text, SelectCity.SelectedItem.ToString(), EntPassword.Text);

   if (!response)
   {
      await DisplayAlert("Oops", "Une erreur s'est produite", "OK");
   }
   else
   {
      await DisplayAlert("Bravo", "Vous êtes maintenant un membre de l'appli !", "Super");
      await PopupNavigation.Instance.PushAsync(new PopupCGU());
      await Navigation.PushAsync(new LoginPage());
   }
}

и код службы API:

public async Task<bool> RegisterUser(string lastname, string firstname, string sexe, string phone, string email, string city, string password)
{
   var httpClient = new HttpClient();
   var registerModel = new RegisterModel()
   {
      lastname = lastname,
      firstname = firstname,
      sexe = sexe,
      phone = phone,
      email = email,
      city = city,
      password = password
    };

    var json = JsonConvert.SerializeObject(registerModel);
    var content = new StringContent(json, Encoding.UTF8, "application/json");
    var response = await httpClient.PostAsync("URL", content);
    return response.IsSuccessStatusCode;
}

1 Ответ

0 голосов
/ 07 августа 2020

Пытаться поймать не нужно, потому что приложение не будет сканировать sh, если HTTP-запрос не удался. , просто покажите соответствующее сообщение об ошибке со StatusCode из rest api.

 Uri uri = new Uri(string.Format(Constants.TodoItemsUrl, string.Empty));
        HttpResponseMessage response = await client.GetAsync(uri);
        if (response.IsSuccessStatusCode)
        {
            string content = await response.Content.ReadAsStringAsync();
            Items = JsonConvert.DeserializeObject<List<TodoItem>>(content);
        }
        else
        {

            string errorMessage = null;
            switch (response.StatusCode)
            {
                case HttpStatusCode.Created:
                    {
                        errorMessage = "the request resulted in a new resource being created before the response was sent.";
                        break;
                    }
                case HttpStatusCode.BadRequest:
                    {
                        errorMessage = "the request is not understood by the server.";
                        break;
                    }
                case HttpStatusCode.Conflict:
                    {
                        errorMessage = " the request could not be carried out because of a conflict on the server.";
                        break;
                    }

                default:
                    {
                        errorMessage = "Default error";
                        break;
                    }
            }

            DisplayAlert("Error", errorMessage, "OK");
        }

См. https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/web-services/rest#creating -данные .

Обновить

     Uri uri = new Uri(string.Format(Constants.TodoItemsUrl, string.Empty));
        HttpResponseMessage response = await client.GetAsync(uri);
        if (response.IsSuccessStatusCode)
        {
            string content = await response.Content.ReadAsStringAsync();
            TodoItem Item = JsonConvert.DeserializeObject<TodoItem>(content);

            if(Item.result == true)
            {
                DisplayAlert("", "Successful", "OK");
            }
            else
            {
                DisplayAlert("Error", Item.errorMessage, "OK");
            }             
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...