Проблемы с преобразованием потока api json в массив во Flutter

В django api, с которым я работаю, есть следующие действия user api (url = website/user/):

action: CREATE_USER
    necessary params: action, email_address, password
    note: action = 0

action: LOGIN
    necessary params: action, email_address, password
    note: action = 1

action: CHANGE_PASSWORD
    necessary params: action, email_address, password, new_password
    note: action = 2

action: DELETE_USER
    necessary params: action, email_address, password
    note: action = 3

entry api (url = website/entry/):

action: MAIN_PAGE
    necessary params: action
    note: action = 0

action: SEARCH_KEYWORD
    necessary params: action, keyword
    note: action = 1

action: FILTER_YEAR
    necessary params: action, first_year, second_year
    note: action = 0
    note: if filter is for 1 year, first_year and second_year should be equal

archive api (url = website/archive/):

action: CREATE_ARCHIVE
    necessary params: action, email_address, password, keyword, frequency
    note: action = 0
    note: frequency has to be 'daily', 'week', 'biweek', or 'month'

action: DISPLAY_USER_ARCHIVES
    necessary params: action, email_address, password
    note: action = 1
    note: to return entries pulled from archive, use action SEARCH_KEYWORD using the keyword saved in the archive

action: DELETE_ARCHIVE
    necessary params: action, email_address, password, keyword
    note: action = 2

action: UPDATE_FREQUENCY
    necessary params: action, email_address, password, keyword, new_frequency
    note: action = 3
    note: frequency has to be 'daily', 'week', 'biweek', or 'month'

Я могу получать записи в формате json со следующим django req: https://mapone-api.herokuapp.com/entry/?action=0&format=json

это дает:

Следующий код dart утверждает, что приведенная выше запись является null, при попытке доступа к ней выкидывает следующую ошибку: XMLRequesterror. Эта ошибка также возникает при попытке

consumeApi() async { Response publication = await HttpRequests.get("https://mapone-api.herokuapp.com/entry/?action=0&format=json");

  return publication.json;
 }

Future<http.Response> fetchAlbum() { return http.get(Uri.parse("https://mapone-api.herokuapp.com/entry/?action=0&format=json")); }

^ - это то, что предлагает официальная документация flutter. Все, что я пробую, похоже, дает ошибку XML-запроса

Мне нужно, чтобы значения в потоке json были помещены в массив, чтобы я мог поместить их в dataTable(), и мне также нужно иметь возможность обрабатывать запросы логина и пароля. Что я делаю не так? Я пробовал множество вещей, чтобы заставить это работать с очень небольшим успехом

На моей стороне это работает нормально, используя пакет Dio, который является более мощным и, на мой взгляд, более простым в использовании.

import 'package:dio/dio.dart';

  Future<void> consumeApi() async {
    final dio = Dio();

    final response = await dio
        .get('https://mapone-api.herokuapp.com/entry/?action=0&format=json');

    final list = response.data as List;
    print(list); // prints the full response
  }

При использовании стандартного пакета Http это будет выглядеть следующим образом.

import 'package:http/http.dart' as http;
import 'dart:convert';


 Future<void> consumeApi() async {
    final uri = Uri.parse(
        'https://mapone-api.herokuapp.com/entry/?action=0&format=json');

    final response = await http.get(uri);

    final list = json.decode(response.body) as List;

    print(list); // also prints the full response
 }
Вернуться на верх