Flutter开发之HTTP网络请求:dio库(28)

本文介绍了Flutter开发中使用dio库进行HTTP网络请求。dio是Flutter中文网开源的强大Dart Http请求库,支持多种功能。文中说明了添加依赖库、导入库的方法,还给出了Get、Post请求示例及页面代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

第三方库 dio实现get,post网络请求。
dio库文档地址:https://pub.dev/packages/dio#-installing-tab-

添加依赖库
  1. Add this to your package’s pubspec.yaml file:
dependencies:
  dio: ^2.1.13
  1. You can install packages from the command line:
$ flutter pub get
  1. 查看插件安装成功与否:左侧dio-2.1.13包出现
    在这里插入图片描述
导入库
import 'package:dio/dio.dart';
Get、Post请求示例

页面包涵两个按钮:分别触发_get()、_post() 函数。
在这里插入图片描述
页面代码如下:

import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'dart:convert';
import 'dart:io';


////////////// 示例1 //////////////////

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

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

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('请求失败');
  }
}


class HttpDioTest extends StatefulWidget {
  HttpDioTest({Key key, this.title}) : super(key: key);
  final String title;
  @override
  _HttpDioTestState createState() => new _HttpDioTestState();
}

class _HttpDioTestState extends State<HttpDioTest> {

  @override
  Widget build(BuildContext context) {

    return new Scaffold(
      appBar: new AppBar(
        title: new Text('HttpDioTest'),
      ),

      body: Center(
        child:Column(

          children: <Widget>[

            SizedBox(height: 32.0),
            Text("Dio库 Get Post 练习1"),

            SizedBox(height: 32.0),
            RaisedButton(
              onPressed: _getDio,
              child: new Text('_getDio'),
            ),

            RaisedButton(
              onPressed: _postDio,
              child: new Text('_postDio'),
            ),

          ],

        ),
      ),

    );
  }
}

触发_get()的结果
在这里插入图片描述
触发_post()的结果
在这里插入图片描述

特别感谢:
Flutter -------- dio网络请求
Flutter 网络请求的三种简单实现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值