How to solve insecure http not allowed by platform flutter?

2,778

Solution 1

To temp fix your problem. First add a config in res/xml(my full path is /Users/dolphin/source/third-party/Cruise/android/app/src/main/res/xml) folder:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

then in your AndroidManifest.xml file add this config:

android:networkSecurityConfig="@xml/network_security_config"

this could allow http traffic. But it just using to debug, the best way is to using https traffic. more info: How to allow all Network connection types HTTP and HTTPS in Android (9) Pie?

It have solve my same problem. Hope this help for you!

Solution 2

Add these lines to activity tag of AndroidManifest.xml

 android:usesCleartextTraffic="true"
 android:networkSecurityConfig="@xml/network_security_resource"

In res, create a new folder named xml in res folder

Create a new xml file named network_security_resource.xml in xml folder

Add the below code to it-

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
    <trust-anchors>
        <certificates src="system" />
    </trust-anchors>
</base-config>
</network-security-config>

Then follow the steps given here https://flutter.dev/docs/release/breaking-changes/network-policy-ios-android https://developer.android.com/training/articles/security-config

If the above steps does not work. Try changing flutter branch and upgrade it.

I did both the things and now its working. I am on Flutter 1.22.0 • channel stable

Solution 3

Simple Solution to this

I was using

final String baseUrl='http://......herokuapp.com/';

this url that was giving me this exception but then i did http to https

final String baseUrl='https://......herokuapp.com/';

that's due to security purpose of some mobiles

and that worked for me thanks in advance !

Share:
2,778
Himanshu Ranjan
Author by

Himanshu Ranjan

Updated on December 24, 2022

Comments

  • Himanshu Ranjan
    Himanshu Ranjan over 1 year

    I am trying to fetch some data from my custom made rest api and i am having a lot of trouble with this error. I even tried the google official migration guide.

    import 'package:flutter/material.dart';
    import 'dart:convert';
    import 'package:http/http.dart' as http;
    
    class Home extends StatefulWidget {
      @override
      _HomeState createState() => _HomeState();
    }
    
    class _HomeState extends State<Home> {
      String PROTOCOL = "http";
      String DOMAIN = "192.168.0.5:5000";
    
      Future<List<dynamic>> fetchUsers() async {
        var url = "$PROTOCOL://$DOMAIN/posts";
        var result = await http.get(url);
        print(result);
        return json.decode(result.body);
      }
    
      @override
      Widget build(BuildContext context) {
        fetchUsers();
        return Scaffold(
          appBar: AppBar(),
          body: Container(
            child: FutureBuilder<List<dynamic>>(
              future: fetchUsers(),
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                if (snapshot.hasData) {
                  return ListView.builder(
                    itemBuilder: (BuildContext context, int index) {
                      return Text(snapshot.data[index]['description']);
                    },
                    itemCount: snapshot.data.length,
                  );
                } else
                  return Container();
              },
            ),
          ),
        );
    

    My server is up and running and working good with postman but facing troubles with flutter.Need some serious help here!