• flutter 网络请求-Dio


    get请求

    1.get请求不带参数

            [HttpGet]
            public string g1()
            {
                return "abc";
            }
                       () async {
                        try {
                          Response response = await dio.get("https://127.0.0.1:5001/test/g1");
                          print(response.data);
                        } catch (e) {
                          print(e);
                        }
                      }();

    2.get请求带参数

            [HttpGet]
            public string g2(int a,string str)
            {
                return a.ToString()+str;
            }
    Response response = await dio.get("https://127.0.0.1:5001/test/g2?a=3&str=abc");

    或者

    Response response = await dio.get("https://127.0.0.1:5001/test/g2",queryParameters: {"a":3,"str":"abc"});

     或者

                      var data={'a':3,'str':'tom'};
                       () async {
                        try {
                          Response response = await dio.get("https://127.0.0.1:5001/test/g2",queryParameters:data);
                          print(response.data);
                        } catch (e) {
                          print("打印:"+e.toString());
                        }
                      }();

    3.

            [HttpGet]
            public string g3(Student student)
            {
                return student.name;
            }

    传参数时,需要写在body里,get的body不推荐。

    Post请求

    1.post无参数

            [HttpPost]
            public string p1()
            {
                return "abc";
            }
    Response response = await dio.post("https://127.0.0.1:5001/test/p1");

    2.一个body参数

            [HttpPost]
            public string p2([FromBody] string str)
            {
                return str;
            }

    3.参数是一个类对象

            [HttpPost]
            public string p3([FromBody] Student student)
            {
                return student.name;
            }
    Response response = await dio.post("https://127.0.0.1:5001/test/p3",data: {"age":3,"name":"tom"});

    4.参数是一个数组

            [HttpPost]
            public string p4(string[] arr)
            {
                string str = "";
                foreach (var a in arr)
                {
                    str += a;
                }
                return str;
            }
    List list=["a","b","c"];
    
    Response response = await dio.post("https://127.0.0.1:5001/test/p4",data: list);

     5. list对象集合

            [HttpPost]
            public string p5(List<Student> list)
            {
                string str = "";
                foreach (var stu in list)
                {
                    str += stu.name;
                }
                return str;
            }
    String str = '[{"age":18,"name":"tom"},{"age":22,"name":"liu"}]';
    
    Response response = await dio.post("https://127.0.0.1:5001/test/p5", data: str);

    6.传对象和参数混合

            [HttpPost]
            public string p6(List<Student> list,string a,string b)
            {
                string str = "";
                foreach (var stu in list)
                {
                    str += stu.name;
                }
                return str+a+b;
            }
    String str = '[{"age":18,"name":"tom"},{"age":22,"name":"liu"}]';
    var str2={"a":"q","b":"w"};
    
    Response response = await dio.post("https://127.0.0.1:5001/test/p6",queryParameters: str2, data: str);

    7.表单

            [HttpPost]
            public string p7([FromForm] Student student)
            {
                return student.name;
            }
    FormData form=FormData.fromMap({"name": "tom", "age": 25,});
    
    Response response = await dio.post("https://127.0.0.1:5001/test/p7",data:form);

    访问https

                      Dio dio=Dio();
                      //使用https,忽略签名
                      (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate  = (client) {
                        client.badCertificateCallback=(X509Certificate cert, String host, int port){
                            return true;
                        };
                      };
                       () async {
                        try {
                          Response response = await dio.get("https://127.0.0.1:5001/test/g1");
                          print(response);
                        } catch (e) {
                          print(e);
                        }
                      }();

    加证书

    String PEM="XXXXX"; // certificate content
    (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate  = (client) {
        client.badCertificateCallback=(X509Certificate cert, String host, int port){
            if(cert.pem==PEM){ // Verify the certificate
                return true;
            }
            return false;
        };
    };
  • 相关阅读:
    linux shell if 参数
    SHELL输出颜色和闪烁控制
    http层负载均衡之 haproxy实践篇
    linux系统查找大文件脚本
    Nginx的try_files指令和命名location使用实例
    Java SpringMVC实现PC端网页微信扫码支付完整版
    IPTABLES基本例子
    MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)
    spring mvc 集成freemarker模板
    Python—正则表达式
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/10860703.html
Copyright © 2020-2023  润新知