当前位置: 首页 > 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.lryc.cn/news/622682.html

相关文章:

  • Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
  • Flutter Provider 模式实现:基于 InheritedWidget 的状态管理实现
  • SQL183 近三个月未完成试卷数为0的用户完成情况
  • 力扣(LeetCode) ——142. 环形链表 II(C语言)
  • JavaWeb 30 天入门:第十一天 ——Java 反射机制详解
  • 【环境变量与程序地址空间详解】
  • vue3动态的控制表格列的展示简单例子
  • 从希格斯玻色子到 QPU:C++ 的跨维度征服
  • KingbaseES高可用架构深度解析——从读写分离到异地灾备的全方位守护
  • 【C++】异常详解(万字解读)
  • 力扣hot100 | 矩阵 | 73. 矩阵置零、54. 螺旋矩阵、48. 旋转图像、240. 搜索二维矩阵 II
  • [1Prompt1Story] 生成行为控制器 | 语义向量重加权(SVR)
  • 第七十五章:AI的“思维操控师”:Prompt变动对潜在空间(Latent Space)的影响可视化——看懂AI的“微言大义”!
  • Netty 的 Select/Poll 机制核心实现主要在 NioEventLoop 的事件循环
  • Horse3D游戏引擎研发笔记(六):在QtOpenGL环境下,仿Unity的材质管理Shader绘制四边形
  • Nginx域名和IP兼容双方的API地址
  • JavaScript forEach() 与 for 循环 return 行为全解析
  • 1083. 数列极差问题
  • 2025暑期—10ROS系统实现-计算图
  • Linux sar命令详细使用指南
  • 【CV 目标检测】Fast RCNN模型①——与R-CNN区别
  • 【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-用户管理
  • 基于Python的课程作业管理系统 Python+Django+Vue.js
  • .net印刷线路板进销存PCB材料ERP财务软件库存贸易生产企业管理系统
  • 《Python 单例模式(Singleton)深度解析:从实现技巧到争议与最佳实践》
  • pytest tmpdir fixture介绍(tmpdir_factory)(自动在测试开始前创建一个临时目录,并在测试结束后删除该目录)
  • C#单元测试(xUnit + Moq + coverlet.collector)
  • STM32 软件I2C读写MPU6050
  • 云服务平台主流架构的相关知识体系剖析