zoukankan      html  css  js  c++  java
  • Flutter实战视频-移动电商-08.Dio基础_伪造请求头获取数据

    08.Dio基础_伪造请求头获取数据

     上节课代码清除, 重新编写HomePage这个动态组件

     

    开始写请求的方法

    请求数据 。但是由于我们没加请求的头 所以没有返回数据

    451就是表示请求错错误

    创建请求头

    注意这里是Request Headers这块才是请求头

    把请求头全部复制过来。

    然后给这些数据 都加上单引号,做成mapper的形式。

    在VScode里面按住鼠标的alt键就可以多选

    把这些字母的最前面和最后面都加上光标,然后鼠标再输入单引号

    这样单引号就都加上了。

    把这些参数都放在了单引号里面,并且后面加上了逗号

    纠正一个地方,config文件夹是在lib的文件夹下面的

    在我们的首页里面引入请求头的dart文件

    然后只需要在请求之前设置请求头就可以了

     

    返回请求的结果

    最终代码

    httpHeaders.dart

    const httpHeaders={
      'Accept': 'application/json, text/plain',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'Content-Type': 'application/json',
    'Cookie': '_ga=GA1.2.381584897.1534769652; Hm_lvt_022f847c4e3acd44d4a2481d9187f1e6=1552920445,1553872955,1553873168,1554093939; _gid=GA1.2.335717019.1554093939; SERVERID=3431a294a18c59fc8f5805662e2bd51e|1554094392|1554093939; Hm_lpvt_022f847c4e3acd44d4a2481d9187f1e6=1554094392; _gat=1',
    'Host': 'time.geekbang.org',
    'Origin': 'https://time.geekbang.org',
    'Referer': 'https://time.geekbang.org/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'
    };
    httpHeaders.dart

    home_page.dart

    import 'package:flutter/material.dart';
    import 'package:dio/dio.dart';
    import '../config/httpHeaders.dart';
    
    class HomePage extends StatefulWidget {
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      String showText='还没有请求数据';
      @override
      Widget build(BuildContext context) {
        return Container(
          child: Scaffold(
            appBar: AppBar(title: Text('请求远程数据'),),
            body: SingleChildScrollView(
              child: Column(
                children: <Widget>[
                  RaisedButton(
                    onPressed: _jike,
                    child:Text('请求数据')
                  ),
                  Text(showText)
                ],
              ),
            ),
          ),
        );
      }
    
      void _jike(){
        print('开始想极客时间请求数据..........');
        getHttp().then((val){
          setState(() {
           showText=val['data'] .toString();
          });
        });
      }
    
      Future getHttp() async{
        try {
          Response response;
          Dio dio=new Dio();
          dio.options.headers=httpHeaders;//设置请求头
          response=await dio.get('https://time.geekbang.org/serv/v1/column/newAll');
          print(response);
          return response.data;
        } catch (e) {
          return print(e);
        }
      }
    }
    home_page.dart
  • 相关阅读:
    Postman+Newman+Git+JenKins+钉钉(接口自动化测试持续集成)CI_知识回顾与整理
    GitHub 使用入门
    python中json文件处理涉及的四个函数json.dumps()和json.loads()、json.dump()和json.load()的区分
    python实现:重复列表按重复次数排序
    python中lambda匿名函数的用法
    Python中各种符号的意义
    OSI七层协议和TCP/IP的4层、5层协议
    Jmeter中传参输入位置[chrome中区分是否json传参]
    Jmeter中http cookie Manager、Http Header Manager
    jQuery 获取屏幕高度、宽度
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/10635779.html
Copyright © 2011-2022 走看看