Flutter学习8 - 网络编程 Http

1、配置 Http 依赖

  • Flutter 工具库搜索地址:https://pub.dev/

在这里插入图片描述

  • http最新版本查看网址: https://pub.dev/packages/http

在这里插入图片描述

  • 在 pubspec.yaml 中引入 http 插件
dependencies:flutter:sdk: flutterhttp: ^0.13.4 # 请检查并使用最新版本
  • 命令行中输入 “ flutter pub get”

在这里插入图片描述

  • 在 Dart 文件中导入
import 'package:http/http.dart' as http;

2、发送 Get 请求

import 'package:http/http.dart' as http;void main() {_doGet();
}//请求成功
_success(response) {var result = response.body;print("请求成功: $result");
}//请求失败
_failed(response) {var errorCode = response.statusCode;var errorMessage = response.body;print("请求失败:errorCode: $errorCode  errorMessage: $errorMessage");
}//请求成功码
const int SUCCESS_CODE = 200;
//请求 URL
const String GET_URL ='https://api.geekailab.com/uapi/test/test?requestPrams=11';//Get 请求
_doGet() async {var url = Uri.parse(GET_URL);var response = await http.get(url);if (response.statusCode == SUCCESS_CODE) {//成功_success(response);} else {//失败_failed(response);}
}

3、发送 post 请求

使用 post 发送数据常用的内容类型主要有两种:

  • form类型:x-www-form-urlencoded
  • json类型:application/json

(1)form类型:x-www-form-urlencoded

  • 请求参数必须是 Map<String, String> 类型
import 'package:http/http.dart' as http;void main() {_postFormData();
}//请求成功
_success(response) {var result = response.body;print("请求成功: $result");
}//请求失败
_failed(response) {var errorCode = response.statusCode;var errorMessage = response.body;print("请求失败:errorCode: $errorCode  errorMessage: $errorMessage");
}//请求成功码
const int SUCCESS_CODE = 200;
// post form 请求地址
const String POST_FORM_URL = 'https://api.geekailab.com/uapi/test/test';// post 请求
_postFormData() async {var url = Uri.parse(POST_FORM_URL);//请求参数Map<String, String>var params = {'name': 'leon', 'age': '18'};var response = await http.post(url,body: params); //默认为x-www-form-urlencoded 格式,所以可以不用设置content-type
//  var response = await http.post(url, body: params, headers: {
//    'content-type': 'x-www-form-urlencoded'
//  }); if (response.statusCode == SUCCESS_CODE) {//成功_success(response);} else {//失败_failed(response);}
}

(2)json类型:application/json

  • 请求参数必须是 Map<String, String> 类型
  • 可以利用 jsonEncode() 转换
import 'package:http/http.dart' as http;
import 'dart:convert';void main() {_postJsonData();
}//请求成功
_success(response) {var result = response.body;print("请求成功: $result");
}//请求失败
_failed(response) {var errorCode = response.statusCode;var errorMessage = response.body;print("请求失败:errorCode: $errorCode  errorMessage: $errorMessage");
}//请求成功码
const int SUCCESS_CODE = 200;
// post json 请求地址
const String POST_JSON_URL = 'https://api.geekailab.com/uapi/test/testJson';// post 请求
_postJsonData() async {var url = Uri.parse(POST_JSON_URL);//请求参数 json 类型var params = {'name': 'leon', 'age': '18'};var json = jsonEncode(params);var response = await http.post(url, body: json, headers: {'content-type': 'application/json'}); //设置content-type为application/jsonif (response.statusCode == SUCCESS_CODE) {//成功_success(response);} else {//失败_failed(response);}
}

4、将 Response 转换成 Dart Object

  • 从Response获取到的通常是json格式的string数据
  • 为了使用方面我们需要将其转成Dart object,比如:转成Map或转成Model

示例:将 json string 转换成 map

var jsonString = response.body;
var map = jsonDecode(jsonString);
var result = map['message'];

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/511633.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器后端是学习java还是php

没有绝对的"最好"语言&#xff0c;每种后端语言都有其适用的场景和特点。以下是几种常用的后端语言&#xff1a; 1. Java&#xff1a;Java是一种通用且强大的语言&#xff0c;广泛用于企业级应用和大型系统。它有很好的性能和可靠性&#xff0c;并且具有优秀的生态系…

jxls——自定义命令设置动态行高

文章目录 前言依赖引入绘制 jxls 批注的 excel 模板测试类编写自定义命令关于自动换行 前言 之前的博客中都简单说了数据的渲染和导出excel文件。包括固定的 表头结构&#xff0c;以及动态 表头和表数据等方式。 本篇博客主要说明自定义命令的方式&#xff0c;控制输出excel文…

线上问题——学习记录幂等判断失效问题分析

一、业务流程 上图是对save和saveScore两个接口的流程抽象&#xff0c;save是上传答题数据&#xff0c;saveScore则是上传答题分数&#xff0c;为保证幂等和防止并发调用&#xff0c;这两个接口都加了分布式锁&#xff08;还是两层哦&#xff09;。第一层使用的是不同的锁&…

NXP实战笔记(十一):32K3xx基于RTD-SDK在S32DS上配置LPSPI(同步、异步、DMA、主机、从机、中断、轮询)

目录 1、概述 2、RTD-SDK配置 2.1、配置目标 2.2、主、从机引脚配置 2.3、时钟配置 2.4、LPSPI配置 2.5、中断配置 2.6、DMA配置(使用DMA才会配置) 2、dma Logic Instance 2.7、RM配置(使用DMA的情况下必须配置此选项) 3、代码实现 1、概述 S32K3_低功耗LPSPI轮询…

【源码】imx6ull实现触摸屏单点实验-移植tslib和qt

一、本实验实验的器材&#xff1a; 1.正点原子imx6ull的阿尔法开发板v2.2 2.屏幕ALIENTEK 4.3 RGBLCD 二、实验已经移植好的文件&#xff1a; 仓库代码&#xff1a;https://gitee.com/wangyoujie11/atkboard_-linux_-driver.git 1.文件说明 arm-qt.tar.bz2&#xff1a;移植好的…

基于springboot的粮食仓库管理系统(源码+论文)

目录 前言 一、功能设计 二、功能实现 三、库表设计 四、论文 前言 随着我国粮食产量的逐年提升&#xff0c;传统的粮食仓库管理模式已经无法适应当前仓储管理的应用需求&#xff0c;互联网系统平台的发展以及系统化管理模式的普及&#xff0c;粮仓的管理也由传统的人工统…

Cmake的使用

第一步&#xff1a;安装Cmake 双击点开即可&#xff0c;无脑下一步。 第二步&#xff1a;编写一个简单的Cmake项目 CMakeLists.txt文件 # 设置最低的 CMake 版本要求 cmake_minimum_required(VERSION 3.10)# 设置项目名称 project(MyProject)# 添加可执行文件 add_executabl…

SUSE12系统破解root密码

SUSE12系统破解root密码 1、重启系统&#xff0c;重启时出现引导界面&#xff0c;按e 2、在启动 linux 的启动选项里加上 init/bin/bash&#xff0c;然后按 F10 启动&#xff0c;通过给内核传递 init/bin/bash 参数使得 OS 在运行 login 程序之前运行 bash&#xff0c;出现命令…

【力扣白嫖日记】626.换座位

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 626.换座位 表&#xff1a;Seat 列名类型idintstudentvarchar id 是该表的主键&#xff08;唯一值&#xf…

Uni-ControlNet: All-in-One Control toText-to-Image Diffusion Models——【论文笔记】

本文发表于NeurIPS 2023 项目官网&#xff1a;Uni-ControlNet: All-in-One Control to Text-to-Image Diffusion Models 一、Introduction 近两年来&#xff0c;扩散模型在图像合成任务中表现优异&#xff0c;尤其是文本到图像&#xff08;T2I&#xff09;扩散模型已成为合成高…

TDengine 在 DISTRIBUTECH 分享输配电数据管理实践

2 月 27-29 日&#xff0c;2024 美国国际输配电电网及公共事业展&#xff08;DISTRIBUTECH International 2024&#xff09;在美国-佛罗里达州-奥兰多国家会展中心举办。作为全球领先的年度输配电行业盛会&#xff0c;也是美洲地区首屈一指的专业展览会&#xff0c;该展会的举办…

08 OpenCV 腐蚀和膨胀

文章目录 作用算子代码 作用 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。其卷积操作非常简单&#xff0c;对于图像的每个像素&#xff0c;取其一定的邻域&#xff0c;计算最大值/最小值作为新图像对应像素位置的像素值。其中,取最大值就是膨胀&#xff0c;取最小值就是腐…