• HttpClient是Flutter中默认的网络访问工具
  • HttpClient可以分别对 get post 请求使用 get getUrl post postUrl 方法
  • 本文仅对HttpClient进行简单介绍,后见将介绍其他网络请求框架

二 网络请求中的几个类

flutter中网络请求的过程

2.1 HttpClient

  • 执行网络请求的客户端
  • 实例化时通过 var httpClient = new HttpClient();
  • 可以发送get请求(get/getUrl)和post请求(post/postUrl)

2.2 Uri

factory Uri(
      {String? scheme,
      String? userInfo,
      String? host,
      int? port,
      String? path,
      Iterable<String>? pathSegments,
      String? query,
      Map<String, dynamic /*String|Iterable<String>*/ >? queryParameters,
      String? fragment}) = _Uri;
  • scheme:如网络请求时为httphttps,文件请求时为file
  • userInfo:权限组件的用户信息部分,此部分默认为空
  • host:主机部分,不区分大小写
  • port:端口号,http请求时为80,https请求时为443
  • path:接口请求路径(方法)
  • pathSegments:同path,只不过将path分段了
  • queryParameters:请求参数
  • query:同queryParameters,将queryParameters合并成一个
var uri = Uri(
        scheme: 'https',
        host: 'www.wanandroid.com',
        path: '/user/login',
        queryParameters: {'username': 'wanandroidUser1', 'password': '123456'});

2.3 HttpClientRequest

添加请求信息

  • request.persistentConnection:支持请求的持久连接状态(默认true)
  • request.headers:请求头
  • request.cookies:cookies

2.4 HttpClientResponse

客户端连接的HTTP响应

  • response.statusCode:状态码

三 请求接口

玩Android 开放API-登录

登录用户信息

  • url:https://www.wanandroid.com/user/login
  • username:wanandroidUser1
  • password:123456

4.1 分开请求

void _httpClientPost1() async {
    var httpClient = new HttpClient();
    var uri = Uri(
        scheme: 'https',
        host: 'www.wanandroid.com',
        path: '/user/login',
        queryParameters: {'username': 'wanandroidUser1', 'password': '123456'});
    // var uri2=Uri.https('www.wanandroid.com', '/user/login',{'username': 'wanandroidUser1', 'password': '123456'});
    HttpClientRequest request = await httpClient.postUrl(uri);
    HttpClientResponse response = await request.close();
    String responseBody = await response.transform(utf8.decoder).join();
    setState(() {
      _data = responseBody;
    print(responseBody);

4.2 链式请求

void _httpClientPost2() {
    var httpClient = new HttpClient();
    var uri = Uri(
        scheme: 'https',
        host: 'www.wanandroid.com',
        path: '/user/login',
        queryParameters: {'username': 'wanandroidUser1', 'password': '123456'});
    // var uri2=Uri.https('www.wanandroid.com', '/user/login',{'username': 'wanandroidUser1', 'password': '123456'});
    httpClient.postUrl(uri).then((HttpClientRequest request) {
      return request.close();
    }).then((HttpClientResponse response) async {
      String responseBody = await response.transform(utf8.decoder).join();
      setState(() {
        _data = responseBody;
        print(responseBody);

3.3 设置显示

String _data;
body: Center(child: Text("$_data"),),

4.4 效果图

I/flutter (13964): {"data":{"admin":false,"chapterTops":[],"coinCount":0,"collectIds":[],"email":"","icon":"","id":99295,"nickname":"wanandroidUser1","password":"","publicName":"wanandroidUser1","token":"","type":0,"username":"wanandroidUser1"},"errorCode":0,"errorMsg":""}

                    一 概述HttpClient是Flutter中默认的网络访问工具HttpClient可以分别对get和post请求使用get、getUrl和post、postUrl方法本文仅对HttpClient进行简单介绍,后见将介绍其他网络请求框架二 网络请求中的几个类flutter中网络请求的过程2.1 HttpClient执行网络请求的客户端实例化时通过var httpClient = new HttpClient();可以发送get请求(get/getUrl)和post请求(post/
				
Flutter网络请求使用的是Dio。Dio是一个强大易用的dart http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载……. Flutter json数据解析是使用了json_serializable package包。它是一个自动化源代码生成器,可以为我们生成JSON序列化模板。由于序列化代码不再由我们手写和维护,我们将运行时产生JSON序列化异常的风险降至最低。 Flutter网络请求数据并且展示效果图: 数据是使用的聚合数据的API,影讯API合集,大家可以注册个账号,申请使用一下,像这样 在pubs
我们知道AnimationController.forward()可以正向播放动画,AnimationController.reverse()可以反向播放动画,播完即停止。若想让动画播完还可以重新播放不断循环,可以调用 AnimationController.repeat():从头开始循环 AnimationController.repeat(reverse: true):反向循环,从头播到尾,再从尾播到头 若要让动画停止,可以调用AnimationController.stop()方法 下面的示例中有一个绿色的方形,其宽高从100变大到200,然后再重头开始,不断循环 var httpClient = new HttpClient(); var uri = Uri.parse('https://xym.ibeeger.com/api/article/list'); var request = await httpClient.getUrl(uri); var response =...
本文目录Dialog加载框实现对话框 Dialog加载框 做过Java开发Android程序的程序员,应该知道Android对话框的样式与效果,其实在Flutter开发中,实现对话框与Android开发中的思路是一样的,都是用Dialog封装加载的文字以及其他的一些内容,下面是本博文最后实现的对话框动画效果。 实现对话框 思路我们有了,我们首先肯定是要先实现对话框的内容,话不多说,我们直接先来看看...
文章目录1.Http的请求方式简介2.Flutter HTTP 网络请求实现的区别和特点2.1 io.dart 里的 HttpClient 实现。2.2 Dart 原生 HTTP 请求库实现。2.3 第三方库实现3.总结 HTTP 网络请求开发语言里比较常用和重要的功能,主要用于资源访问、接口数据请求和提交、上传下载文件等等操作,HTTP 请求方式主要有:GET、POST、HEAD、PUT、DE...
1. 文件操作 无论是Flutter还是DartVM下的脚本(系统路径不同,Dart VM运行在PC或服务器操作系统下,Flutter运行在移动操作系统下)都通过Dart IO库来操作文件。 在实际开发中,如果存储一些简单的数据,推荐使用s. void _fetchData() async { final response = await http.get('https://jsonplaceholder.typicode.com/todos/1'); if (response.statusCode == 200) { print(response.body); } else { print('请求失败,状态码为 ${response.statusCode}'); RaisedButton( onPressed: _fetchData, child: Text('获取网络请求'), 这样点击按钮就可以发送网络请求并获取响应数据了。