当前位置: 首页 > news >正文

Flutter开发 网络请求

HttpClient(dart自有)

1.get
点击请求按钮获取数据,解析数据获取单词展示到屏幕上。
请添加图片描述

class MyState extends State {String info = "暂无数据";List<Widget> texts = [];void initState() {super.initState();}Widget build(BuildContext context) {void parseJson(var body) {List<Widget> wList = [];List data = jsonDecode(body)["data"];for (int i = 0; i < data.length; i++) {print(data[i]["word"]);Text text = Text(data[i]["word"]);wList.add(text);}setState(() {texts = wList;});}void getData() async {String url ="https://7a6396f8-09a1-4ade-b42a-f6db7776fb31.mock.pstmn.io/flutter";var httpClient = HttpClient();var request = await httpClient.getUrl(Uri.parse(url));var response = await request.close();var body = await response.transform(utf8.decoder).join();if (response.statusCode == 200) {setState(() {info = body;});parseJson(body);}}return Scaffold(appBar: AppBar(title: Text("登录"),centerTitle: true,backgroundColor: Colors.blue,foregroundColor: Colors.white,),body: ListView(children: texts),floatingActionButton: FloatingActionButton(onPressed: () {getData();},child: Text("请求"),),);}
}

2.post

  void postData() async {String url = "https://7a6396f8-09a1-4ade-b42a-f6db7776fb31.mock.pstmn.io/q";HttpClient httpClient = HttpClient();HttpClientRequest request = await httpClient.postUrl(Uri.parse(url));// 设置请求头request.headers.set('Content-Type', 'application/json; charset=UTF-8');Map<String, dynamic> pMap = {"random:": "q"};request.write(jsonEncode(pMap));HttpClientResponse response = await request.close();// 检查响应状态码if (response.statusCode == HttpStatus.ok) {// 读取响应内容final String responseBody = await response.transform(utf8.decoder).join();print('POST 响应数据: $responseBody');} else {print('请求失败,状态码: ${response.statusCode}');}}

原生http请求库(插件)

导入依赖

dependencies:http: ^1.4.0

代码

import 'package:http/http.dart' as http;void httpGet() async {String url ="https://7a6396f8-09a1-4ade-b42a-f6db7776fb31.mock.pstmn.io/flutter";var result = await http.get(Uri.parse(url));if (result.statusCode == HttpStatus.ok) {print(result.body.toString());}}//postvoid httpPost(var body) async {String url = "https://7a6396f8-09a1-4ade-b42a-f6db7776fb31.mock.pstmn.io/q";var result = await http.post(Uri.parse(url), body: body);if (result.statusCode == HttpStatus.ok) {print(result.body.toString());}else{print(result.statusCode);}}

解析xml

<books><book id="101"><title>XML入门指南</title><author>李四</author><price>39.90</price><publisher>科技出版社</publisher></book><book id="102"><title>Web开发实战</title><author>王五</author><price>59.00</price><publisher>电子工业出版社</publisher></book>
</books>
      xml.XmlDocument xmlDocument = xml.XmlDocument.parse(result.body);Iterable<xml.XmlElement> xmlElement = xmlDocument.findElements("books");Iterable<xml.XmlElement> books = xmlElement.single.findAllElements("book");books.forEach((element) {print(element.findElements("id").single.innerText);print(element.findElements("title").single.innerText);},);I/flutter ( 3477): 101
I/flutter ( 3477): XML入门指南
I/flutter ( 3477): 102
I/flutter ( 3477): Web开发实战
http://www.xdnf.cn/news/1310113.html

相关文章:

  • ESP32-S3_ES8311音频输出使用
  • 【嵌入式C语言】六
  • 【读论文】医疗AI大模型:百川开源Baichuan-M2
  • 第二十五天:构造函数/析构函数/拷贝构造
  • 开发一款多商户电商APP要多久?功能拆解与源码技术落地方案
  • 迭代器模式及优化
  • 模式匹配自动机全面理论分析
  • 【Web后端】Django、flask及其场景——以构建系统原型为例
  • AI 搜索时代:引领变革,重塑您的 SEO 战略
  • 基于uni-app+vue3实现的微信小程序地图范围限制与单点标记功能实现指南
  • Matplotlib直线绘制:从基础到三维空间的高级可视化
  • 数组名本质与指针运算揭秘
  • List容器:特性与操作使用指南
  • 零基础学习人工智能的完整路线规划
  • 民法学学习笔记(个人向) Part.5
  • 学习游戏制作记录(制作系统与物品掉落系统)8.16
  • MySQL查询性能慢时索引失效的排查与优化实践
  • Redis缓存
  • 【OpenGL】LearnOpenGL学习笔记09 - 材质、光照贴图
  • 登录与登录校验:Web安全核心解析
  • 【昇腾】单张48G Atlas 300I Duo推理卡MindIE+WebUI方式跑7B大语言模型_20250816
  • 如何在FastAPI中玩转APScheduler,实现动态定时任务的魔法?
  • 【wmi异常】关于taskkill命令提示“错误:找不到” 以及无法正常获取设备机器码的处理办法
  • pytorch例子计算两张图相似度
  • PHP反序列化的CTF题目环境和做题复现第2集_POP链构造
  • 利用Qwen大模型进行c++11并发库的学习,与时俱进!!!!
  • AI安全增强核心技术:提示词防火墙、置信度过滤与知识蒸馏防御
  • 第6问 数据分析领域主要的岗位有哪些?
  • Rust 入门 KV存储HashMap (十七)
  • pdf合并代码