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' };
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); } } }