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

 

posted @ 2019-04-01 13:12  高山-景行  阅读(281)  评论(0编辑  收藏  举报