Ошибка Flutter Http SocketException: ошибка ОС: в соединении отказано

Я использую последнюю версию флаттера в только что созданном проекте. Я пытаюсь назвать этот URL https://jsonplaceholder.typicode.com/users

Но на iOS или Android я получаю flutter: Error SocketException: OS Error: Connection refused, errno = 61, address = jsonplaceholder.typicode.com, port = 52988

Вот мой сетевой вызов:

import 'dart:async';
import 'dart:convert';
import 'dart:io';

import 'package:test_flutter/constants.dart';
import 'package:test_flutter/users/models/user.dart';

class UserNetworkDatasource {
  Future<List<User>> retrieve() async {
    var httpClient = HttpClient();
    var uri = new Uri.https(baseUrl, '/users');
    var request = await httpClient.getUrl(uri);
    var response = await request.close();
    var responseJson = await response.transform(utf8.decoder).join();
    List userMap = json.decode(responseJson);

    return userMap.map((jsonUser) => User.fromJson(jsonUser));
  }
}

Есть ли что-нибудь, кроме этого? Я проверяю манифест Android, и у него есть разрешение на Интернет, так что все должно быть в порядке

Flutter 0.3.2 • бета-версия канала

Framework • ревизия 44b7e7d3f4 (4 недели назад) • 20.04.2018 01:02:44 -0700

Двигатель • ревизия 09d05a3891

Инструменты • Dart 2.0.0-dev.48.0.flutter-fe606f890b


person jaumard    schedule 16.05.2018    source источник
comment
Убедитесь, что на вашем устройстве есть сеть ... и все же вы получаете исключение?   -  person Shyju M    schedule 16.05.2018
comment
Вам следует попробовать использовать http-пакет https://pub.dartlang.org/packages/http вместо dart: io напрямую. Дополнительные ресурсы здесь flutter.io/cookbook/networking/fetch-data   -  person Hadrien Lejard    schedule 16.05.2018
comment
@ShyjuM У меня есть сеть, так как я могу получить доступ к тому же URL из браузера устройства :)   -  person jaumard    schedule 16.05.2018
comment
@HadrienLejard Я сначала пробую это :), но та же ошибка   -  person jaumard    schedule 16.05.2018
comment
вы пробовали flutter upgrade?   -  person Hadrien Lejard    schedule 16.05.2018
comment
Уже в актуальном состоянии :(   -  person jaumard    schedule 16.05.2018
comment
Вы проверили этот flutter.io/cookbook/networking/fetch-data   -  person Shyju M    schedule 17.05.2018
comment
Да, я следил за этим :) Я обнаружил проблему, мне пришлось добавить заголовок accept: application / json, после этого все было хорошо ...   -  person jaumard    schedule 17.05.2018
comment
Спасибо всем :)   -  person jaumard    schedule 17.05.2018
comment
Как проверить, есть ли интернет?   -  person Harsh Bhavsar    schedule 04.10.2018
comment
Обновите ответ здесь, что у вас есть решение.   -  person Purvik Rana    schedule 12.03.2019
comment
@jaumard получает такую ​​же ошибку, помогите мне! как использовать соединение web3 во флаттере, проверьте это stackoverflow.com/questions/55393249/   -  person Ishwar Chandra Tiwari    schedule 28.03.2019
comment
Я думаю, ваша версия флаттера - 1.3.2   -  person Mangaldeep Pannu    schedule 05.04.2019


Ответы (2)


У меня была такая же ошибка, но только при сборке релиза (android). В папке android в app / src есть 3 папки: debug, main и profile, каждая из которых содержит файл AndroidManifest. У того, что в папке отладки, было разрешение на доступ в Интернет, а у основного - нет, и это вызывало ошибку.

person Ethirallan    schedule 10.04.2019
comment
main, debug и profile все файлы манифеста имеют разрешение на доступ в Интернет в моем проекте, но на реальных устройствах все еще возникают ошибки исключения сокетов. - person s.j; 16.04.2021
comment
@ s.j вы пробовали запустить flutter clean после обновления файлов AndroidManifest? - person Ethirallan; 16.04.2021
comment
да пробовал, но безрезультатно. - person s.j; 19.04.2021
comment
@ s.j извините, но с предоставленной информацией я действительно не могу вам помочь. - person Ethirallan; 27.04.2021

Попробуйте зайти по ссылке с телефона. У меня была такая же проблема, я использовал python http.server для размещения файла json. Сначала я создавал такое же исключение, потому что привязываю его к заранее определенному URL-адресу. И мой эмулятор не смог получить доступ к URL-адресу.

person Ritam Chakraborty    schedule 05.04.2019