Проблемы с преобразованием потока 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
}