Flutter(二十一)——dio库

本文详细介绍了Flutter中dio库的使用,包括基本用法、dio单例、拦截器、拦截器链和适配器。dio是一个强大的http请求库,支持文件上传/下载、Cookie管理、FormData等,通过拦截器可以实现请求前后的自定义处理。文章通过实例演示了dio如何配置和使用,适用于需要更灵活控制网络请求的场景。
摘要由CSDN通过智能技术生成

前言

前面介绍了dart语言自带的网络请求库httpClient,以及官方推荐的网络请求库http,但我们的网络请求其实千变万化,并不仅仅只是请求一个网页获取某种数据这一种需求。

有时候,我们也需要在网络请求之前以及之后做些准备工作,这就涉及到如果监听我们的网络请求过程,这个时候前面的网络请求方式显然不能满足我们的需求,所以我们需要借助强大的第三方网路请求库dio。

dio库是Flutter中文网提供的一个强大的http请求库,在Github上它的star数量已经超过3000次,如果你用Java开发过Android程序,肯定用到过OkHttp库,其实它们两有些相似。它支持文件的上传/下载,Cookie管理,FormData,请求/取消,拦截器等操作。下面博主将详细介绍dio库的用法。

基本用法

通过在网络请求中,基本用法如前面一样就是get与post请求。比如通过get请求获取一个网址的内容,可以通过如下代码实现:

_getData() async{
   
    try{
   
      Response response=await Dio().get("https://www.baidu.com/");
      print(response);
    }catch(e){
   
      print(e);
    }

代码很简单这里就不做过多的赘述,接着我们再来看看post请求,代码如下:

_postData() async{
   
    try{
   
      Response response=await Dio().post("https://www.baidu.com/",data: {
   });
      print(response);
    }catch(e){
   
      print(e);
    }
  }

与get请求唯一的区别是多了一个参数传递,通过键值对的方式。

dio单例

一个dio实例可以发起多个网络请求。很多时候,在App里只存在一个http数据源,且有一些公共的配置项,比如公共的头文件,公共的请求地址,超时设置等。在这些情况下,我们可以考虑使用dio库提供的单例模式,这也是dio库推荐的用法,便于程序员管理,创建的代码如下:

    var dio=new Dio(new BaseOptions(
      baseUrl: "http://liyuanjinglyj.com/demo",//链接
      connectTimeout: 5000,//链接超时
      receiveTimeout: 100000,//响应超时
      headers: {
   //请求头
        HttpHeaders.userAgentHeader:"dio",
        "api": "1.0.0",
      },
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李元静

您的鼓励就是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值