Я пытаюсь прочитать список из Rest API - PullRequest
1 голос
/ 27 мая 2020

Я пытаюсь прочитать список из API для отдыха, в котором я создал. net

Вот класс

public class Cliente
    {
        public string Cliente1 { get; set; }
        [PrimaryKey]
        public string Correo { get; set; }
        public string Telefono { get; set; }
        public string Calle { get; set; }
        public string Hab { get; set; }
        public string Ciudad { get; set; }
        public string Estado { get; set; }
        public Nullable<int> Zip { get; set; }
        public int Row { get; set; }
        public string Celular { get; set; }
        public string ID { get; set; }
    }



вот вызов

public Cliente getCliente()
        {
            try
            {
                Cliente cliente;
                var URLWebAPI = "https://www.caja.somee.com/api/Clientes";
                using (var Client = new System.Net.Http.HttpClient())
                {
                    var JSON = Client.GetStringAsync(URLWebAPI);
                    cliente = Newtonsoft.Json.JsonConvert.DeserializeObject<Cliente>(JSON.Result);
                }

                return cliente;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

вот метод

Repositorio repo = new Repositorio();
            Cliente listacliente = repo.getCliente();
            ListaClientes.ItemsSource = listacliente.Cliente1;

вот xaml-представление

<ListView x:Name="ListaClientes" BackgroundColor="White" VerticalOptions="Fill" Grid.Row="1" Grid.Column="0" SeparatorColor="LightGray">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <ViewCell>
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="20"/>
                                            <RowDefinition Height="20"/>
                                            <RowDefinition Height="20"/>
                                        </Grid.RowDefinitions>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="3*"/>
                                            <ColumnDefinition Width="7*"/>
                                        </Grid.ColumnDefinitions>
                                        <Label Text="{Binding Cliente1}"  Grid.Row="0" Grid.Column="1" HorizontalOptions="Center" VerticalOptions="Center"   TextColor="DarkRed"  />

                                    </Grid>
                                </ViewCell>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>

и это ошибка

Newtonsoft. Json .JsonSerializationException: 'Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип' AppCaja.Cliente ', потому что для правильной десериализации типу требуется объект JSON (например, {"name": "value"}) . Чтобы исправить эту ошибку, либо измените JSON на JSON объект (например, {"name": "value"}) или измените десериализованный тип на массив или тип, реализующий интерфейс коллекции (например, ICollection, IList) например List, который можно десериализовать из массива JSON. JsonArrayAttribute также можно добавить к типу, чтобы заставить его десериализоваться из массива JSON. Путь '', строка 1, позиция 1. '

Мне действительно нужна ваша помощь, я бы хотел, чтобы она работала

1 Ответ

1 голос
/ 27 мая 2020
  1. API возвращает XML, вам необходимо обновить это.

  2. Вам необходимо настроить ваш клиент для чтения Json.

>

using (var Client = new System.Net.Http.HttpClient())
{
 //This line
 Client.DefaultRequestHeaders.Accept.Add(new 
 MediaTypeWithQualityHeaderValue("application/json"));    

 var JSON = Client.GetStringAsync(URLWebAPI);
 cliente = Newtonsoft.Json.JsonConvert.DeserializeObject<Cliente>(JSON.Result);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...