微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter -------- dio网络请求

dioFlutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等...


1.添加依赖#

dependencies:
  dio: 2.1.x  #latest version

 

2.导入库

import 'package:dio/dio.dart'; //导入前需要配置

 

get

 

 String data;
  void _getdio() async {
    Response response =
        await dio().get("https://jsonplaceholder.typicode.com/posts/1");
    print("get ====== "+response.toString());
    final body = json.decode(response.toString());

    setState(() {
      data = body['title'];
      print("title ====== "+data);
    });
  }

 

 

post

 

void _postdio() async {
    var headers = Map<String, String>();
    headers['loginSource'] = 'IOS';
    headers['useVersion'] = '3.1.0';
    headers['isEncoded'] = '1';
    headers['bundleId'] = 'com.nongfadai.iospro';
    headers['Content-Type'] = 'application/json';

    dio dio = dio();
    dio.options.baseUrl = "http://api.juheapi.com/japi/toh";
    dio.options.connectTimeout = 60000;
    dio.options.receiveTimeout = 60000;
    dio.options.headers.addAll(headers);
    dio.options.method = 'post';

    var params = {
      'v': '1.0',
      'month': '7',
      'day': '25',
      'key': 'bd6e35a2691ae5bb8425c8631e475c2a'
    };

    Options option = Options(method: 'post');
    Response response = await dio.post("http://api.juheapi.com/japi/toh",
        /*data: {
          "v": "1.0",
          "month": "7",
          "day": "25",
          "key": "bd6e35a2691ae5bb8425c8631e475c2a"
        },*/
        data: params,
        options: option);

    if (response.statusCode == 200) {
      debugPrint('===请求求url: ${response.request.uri.toString()}');
      debugPrint('===请求headler: ${response.request.headers}');
      debugPrint('===请求结果: \n${response.data}\n');
    } else {
      print('请求失败');
    }
  }

 


调用

 

import 'dart:convert';
import 'package:Flutter/material.dart';

import 'package:dio/dio.dart';

class HttpDemo1 extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // Todo: implement createState
    return new HttpPage();
  }
}

class HttpPage extends State<HttpDemo1> {
  @override
  void initState() {
    // Todo: implement initState
    super.initState();
    _getdio();
    _postdio();
  }

  @override
  Widget build(BuildContext context) {
    // Todo: implement build
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("dio网络请求"),
      ),
      body: new Center(
        child: new Text("$data"),
      ),
    );
  }
}

 

控制台

 


dio库 说明文档

https://pub.dev/packages/dio

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐