0

I have written API with ASP.net core and I want to fetch data from that with Flutter but my code has error like this:

E/flutter (10049): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: HandshakeException: Handshake error in client (OS Error: 
E/flutter (10049):  CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:354))
E/flutter (10049): #0      IOClient.send (package:http/src/io_client.dart:33:24)
E/flutter (10049): <asynchronous suspension>
E/flutter (10049): #1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:176:38)
E/flutter (10049): #2      BaseClient.get (package:http/src/base_client.dart:35:7)
E/flutter (10049): #3      get.<anonymous closure> (package:http/http.dart:46:36)
E/flutter (10049): #4      _withClient (package:http/http.dart:166:20)
E/flutter (10049): #5      get (package:http/http.dart:46:5)
E/flutter (10049): #6      APIServices.fetchStudent (package:aspapi/models/api.services.dart:9:12)
E/flutter (10049): #7      _StudentsState.getStudents (package:aspapi/ui/students.dart:17:19)
E/flutter (10049): #8      _StudentsState.build (package:aspapi/ui/students.dart:32:5)
E/flutter (10049): #9      StatefulElement.build (package:flutter/src/widgets/framework.dart:4619:28)
E/flutter (10049): #10     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4502:15)
E/flutter (10049): #11     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
E/flutter (10049): #12     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #13     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4481:5)
E/flutter (10049): #14     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4666:11)
E/flutter (10049): #15     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4476:5)
E/flutter (10049): #16     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
E/flutter (10049): #17     Element.updateChild (package:flutter/src/widgets/framework.dart:3214:18)
E/flutter (10049): #18     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #19     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #20     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4481:5)
E/flutter (10049): #21     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4476:5)
E/flutter (10049): #22     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
E/flutter (10049): #23     Element.updateChild (package:flutter/src/widgets/framework.dart:3214:18)
E/flutter (10049): #24     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #25     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #26     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4481:5)
E/flutter (10049): #27     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4476:5)
E/flutter (10049): #28     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
E/flutter (10049): #29     Element.updateChild (package:flutter/src/widgets/framework.dart:3214:18)
E/flutter (10049): #30     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #31     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #32     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4481:5)
E/flutter (10049): #33     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4476:5)
E/flutter (10049): #34     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
E/flutter (10049): #35     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5947:32)
E/flutter (10049): #36     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
E/flutter (10049): #37     Element.updateChild (package:flutter/src/widgets/framework.dart:3214:18)
E/flutter (10049): #38     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #39     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
E/flutter (10049): #40     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #41     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4481:5)
E/flutter (10049): #42     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4666:11)
E/flutter (10049): #43     ComponentElement.mount (package:flutter/src/widgets/framework.dart:4476:5)
E/flutter (10049): #44     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
E/flutter (10049): #45     Element.updateChild (package:flutter/src/widgets/framework.dart:3214:18)
E/flutter (10049): #46     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527
Debug service listening on ws://127.0.0.1:8773/6hBnRZt2y-g=/ws
Syncing files to device Android SDK built for x86...
E/flutter (10049): [ERROR:flutter/shell/common/shell.cc(202)] Dart Error: Unhandled exception:
E/flutter (10049): HandshakeException: Handshake error in client (OS Error: 
E/flutter (10049):  CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:354))
E/flutter (10049): #0      IOClient.send (package:http/src/io_client.dart:33:24)
E/flutter (10049): <asynchronous suspension>
E/flutter (10049): #1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:176:38)
E/flutter (10049): #2      BaseClient.get (package:http/src/base_client.dart:35:7)
E/flutter (10049): #3      get.<anonymous closure> (package:http/http.dart:46:36)
E/flutter (10049): #4      _withClient (package:http/http.dart:166:20)
E/flutter (10049): #5      get (package:http/http.dart:46:5)
E/flutter (10049): #6      APIServices.fetchStudent (package:aspapi/models/api.services.dart:9:12)
E/flutter (10049): #7      _StudentsState.getStudents (package:aspapi/ui/students.dart:17:19)
E/flutter (10049): #8      _StudentsState.build (package:aspapi/ui/students.dart:32:5)
E/flutter (10049): #9      StatefulElement.build (package:flutter/src/widgets/framework.dart:4619:28)
E/flutter (10049): #10     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4502:15)
E/flutter (10049): #11     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
E/flutter (10049): #12     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #13     StatefulElement.update (package:flutter/src/widgets/framework.dart:4707:5)
E/flutter (10049): #14     Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (10049): #15     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #16     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #17     StatelessElement.update (package:flutter/src/widgets/framework.dart:4583:5)
E/flutter (10049): #18     Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (10049): #19     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #20     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #21     ProxyElement.update (package:flutter/src/widgets/framework.dart:4862:5)
E/flutter (10049): #22     Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (10049): #23     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #24     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #25     ProxyElement.update (package:flutter/src/widgets/framework.dart:4862:5)
E/flutter (10049): #26     Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (10049): #27     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5522:32)
E/flutter (10049): #28     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5957:17)
E/flutter (10049): #29     Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (10049): #30     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #31     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
E/flutter (10049): #32     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #33     StatefulElement.update (package:flutter/src/widgets/framework.dart:4707:5)
E/flutter (10049): #34     Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (10049): #35     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #36     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #37     ProxyElement.update (package:flutter/src/widgets/framework.dart:4862:5)
E/flutter (10049): #38     Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (10049): #39     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16)
E/flutter (10049): #40     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4675:11)
E/flutter (10049): #41     Element.rebuild (package:flutter/src/widgets/framework.dart:4218:5)
E/flutter (10049): #42     StatefulElement.update (package:flutter/src/widgets/framework.dart:4707:5)
E/flutter (10049): #43     Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (10049): #44     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:5837:14)
E/flutter (10049): #45     Element.updateChild (package:flutter/src/widgets/framework.dart:3201:15)
E/flutter (10049): #46     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4527:16

I set Internet permission, change Ip but nothings work this is my code:

class Students extends StatefulWidget {
  @override
  _StudentsState createState() => _StudentsState();
}

class _StudentsState extends State<Students> {
  List<Student> students;

  getStudents(){
    try {
      APIServices.fetchStudent().then((value) {
        Iterable list = json.decode(value.body);
        List<Student> studentList = List<Student>();
        studentList = list.map((model) => Student.fromObject(model)).toList();
        setState(() {
          students = studentList;
        });
      });
    }catch(e){
      print(e);
    }
  }

  @override
  Widget build(BuildContext context) {
    getStudents();
    return Scaffold(
      body: students == null ? Center(child: Text("Empty"),) : ListView.builder(itemCount: students.length,itemBuilder: (context,index){
        return ListTile(
          title: Text(students[index].firstName + " " + students[index].lastName),
          subtitle: Text(students[index].gender),
          onTap: null,
        );
      }),
    );
  }
}

class APIServices{
  static String studentUrl = "https://192.168.1.105:44357/api/student";

  static Future<http.Response> fetchStudent() async{
    return http.get(studentUrl);
  }
}

1 Answer 1

2

First you should change IIS Express to your project name then create a xml file in this directory: android -> app -> src -> main -> res -> xml name of that file is network_security_config.xml after that copy these codes into the file:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">10.0.2.2</domain>
    </domain-config>
</network-security-config>

Then in manifest file add this code into application tag:

android:networkSecurityConfig="@xml/network_security_config"

like this:

<application
        ...
        android:networkSecurityConfig="@xml/network_security_config">

Then you can use Dio package like this:

  static Future fetchStudent() async{
    Dio dio = Dio();
    (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
    (client){
      client.badCertificateCallback = (X509Certificate cert,String host,int port) => true;
      return client;
    };
    Response response = await dio.get(https://10.0.2.2:5001/api/student);
    return response.data;
  }

Done :D

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.