13 votes

Flutter - http.get échoue sur la cible de construction macos : La connexion a échoué

J'ai commencé à porter mon application Flutter sur macos Desktop . L'interface utilisateur a bien démarré. Cependant, dès que l'application effectue un appel réseau, elle échoue instantanément avec le message suivant La connexion a échoué (Erreur OS : Opération non autorisée) .

J'ai lancé une ligne directe :

final response = await http.get('https://jsonplaceholder.typicode.com/posts/1');

échoue avec :

Unhandled Exception: SocketException: Connection failed (OS Error: 
    Operation not permitted, errno = 1),
         address = jsonplaceholder.typicode.com, port = 443
#0      IOClient.send (package:http/src/io_client.dart:33:23)

La cible de construction de macos provient de l'échantillon de Google. aquí .

Flutter (maître du canal, v1.9.8-pre.108)

22voto

kosiara Points 81

Votre projet macOS XCode n'a pas la permission d'utiliser l'Internet appelé "Connexions sortantes (client)".

Ouvrez votre projet xcode macos - [Root]/macos/Runner.xcworkspace

Cliquez sur "Runner" dans le navigateur du projet - les paramètres généraux s'affichent. Sélectionnez "Capacités" dans la barre d'onglets et cochez l'option. "Connexions sortantes (client)" .

enter image description here

Reconstruisez votre application dans XCode et lancez le projet.

17voto

smorgan Points 11001

Selon mon commentaire sur l'autre réponse, vous devriez no utiliser l'interface utilisateur des capacités de Xcode pour cela. Elle ne gérera pas correctement les deux fichiers de droits distincts dans un projet Flutter.

Vous devez ajouter :

<key>com.apple.security.network.client</key>
<true/>

à macos/Runner/DebugProfile.entitlements y macos/Runner/Release.entitlements .

Ceci est documenté aquí .

2voto

frankenstein Points 1037

Si vous obtenez cette erreur uniquement dans la version Android alors Internet doit être absente de main manifest . Il suffit d'ajouter Internet permission dans Manifest fichier.

Il suffit d'ajouter cette permission dans le manifeste <uses-permission android:name="android.permission.INTERNET"/>

Il y a trois fichiers manifestes disponibles dans le dossier Android

app/src/debug
app/src/main
app/src/profile

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X