今天来说说Flutter中的网络请求,HttpClient网络请求,包含get,post

get

 var data;

  _get() async {
Map newTitle;
var responseBody;
var url = 'https://jsonplaceholder.typicode.com/posts/1';
var httpClient = new HttpClient();
var request = await httpClient.getUrl(Uri.parse(url));
var response = await request.close();
if (response.statusCode == 200) {
responseBody = await response.transform(utf8.decoder).join();
responseBody = json.decode(responseBody);
print(responseBody.toString());
newTitle = responseBody;
print("get:-------${newTitle}");
} else {
print("error");
data = "null";
}
if (!mounted) return; //状态管理(该控制的核心在于:回调,更新数据在控件上)
/**
有三种方式:
1、Widget自己管理State
2、父类管理State
3、混合管理
*/
setState(() {
data = newTitle['title'];
});
}

post

void _post() async {
HttpClient httpClient = new HttpClient(); // queryParameters get请求的查询参数(适用于get请求???是吗???)
// Uri uri = Uri(
// scheme: "https", host: "xxx.xxx.xxx.xxx", path: homeRegularListUrl);
// HttpClientRequest request = await httpClient.postUrl(uri); var url = "http://api.juheapi.com/japi/toh";
HttpClientRequest request = await httpClient.postUrl(Uri.parse(url)); // 设置请求头
/* request.headers.set("loginSource", "IOS");
request.headers.set("useVersion", "3.1.0");
request.headers.set("isEncoded", "1");
// Content-Type大小写都ok
request.headers.set('content-type', 'application/json');*/ /// 添加请求体
Map jsonMap = {'shopperId': 9356,'machineId':5117,'orderType':2,'orderId':108}; Map<String, String> map1 = new Map();
map1["v"] = "1.0";
map1["month"] = "7";
map1["day"] = "25";
map1["key"] = "bd6e35a2691ae5bb8425c8631e475c2a"; request.add(utf8.encode(json.encode(map1))); HttpClientResponse response = await request.close();
String responseBody = await response.transform(utf8.decoder).join();
if (response.statusCode == HttpStatus.ok) {
print('请求成功');
print(response.headers);//打印头部信息
print("post------${responseBody}");
}
}

调用:

class HttpClientMain extends StatefulWidget {
@override
createState() => new HttpClientHttp();
} class HttpClientHttp extends State<HttpClientMain> {
@override
Widget build(BuildContext context) {
_get();
_post();
return Scaffold(
appBar: new AppBar(
title: new Text("net"),
),
//body: new MyHomePage()
body: new Center(
child: new Text("$data"),
),
);
}
}

控制台打印

get:

post:

Flutter -------- 网络请求之HttpClient的更多相关文章

  1. Flutter网络请求与JSON解析

    本文介绍如何在Flutter中创建HTTP网络请求和对请求的json string进行类型解析. 网络请求 官方使用的是用dart io中的HttpClient发起的请求,但HttpClient本身功 ...

  2. Flutter 网络请求库http

    http 集成http库 https://pub.dartlang.org/packages/http 添加依赖 dependencies: http: ^ 安装 flutter packages g ...

  3. Flutter网络请求和数据解析

    一:前言 - 什么是反射机制,Flutter为什么禁用反射机制? 在Flutter中它的网络请求和数据解析稍微的比较麻烦一点,因为Flutter不支持反射机制.相信大家都看到这么一条,就是Flutte ...

  4. flutter 网络请求以及数据处理

    网络请求使用FutureBuilder来处理 import 'dart:convert'; Widget build(BuildContext context) { return FutureBuil ...

  5. 网络请求框架----HttpClient的get,post和图片上传服务器

    HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议.HttpCli ...

  6. C# 客户端网络请求 对HttpClient的封装

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/a1037949156/article/d ...

  7. Flutter之网络请求

    Flutter之网络请求 一,介绍与需求 1.1,介绍 1,http一个可组合的,基于Future的库,用于发出HTTP请求.包含一组高级功能和类,可轻松使用HTTP资源.它与平台无关,可以在命令行和 ...

  8. flutter dio网络请求封装实现

    flutter dio网络请求封装实现 文章友情链接:   https://juejin.im/post/6844904098643312648 在Flutter项目中使用网络请求的方式大致可分为两种 ...

  9. Flutter学习五之网络请求和轮播图的实现

    上期讲到了,怎样实现一个下拉刷新和加载更多的列表,数据更新,需要使用到网络请求,在flutter中,怎样实现一个网络请求呢?官方使用的是dart io中的HttpClient发起的请求,但HttpCl ...

随机推荐

  1. CentOS 7.x 配置静态 IP 并启用

    centos 7.x 配置静态 IP 并启用 0 问题由来 通过查询本机的IP,发现本机并没有有效IP: [pan@localhost ~]$ ip addr 所以,我们需要设置本机的静态IP,并启用 ...

  2. Java Map的正确使用方式

    原文:https://www.liaoxuefeng.com/article/1256136507802816 正确使用Map,只需要正确实现hashCode()和equals()就行了吗? 恐怕还不 ...

  3. 个性化排序算法实践(四)——GBDT+LR

    本质上GBDT+LR是一种具有stacking思想的二分类器模型,所以可以用来解决二分类问题.这个方法出自于Facebook 2014年的论文 Practical Lessons from Predi ...

  4. AQS的子类在各个同步工具类中的使用情况

    AQS AQS(AbstractQueuedSynchronizer)是 java.util.concurrent的基础.J.U.C中宣传的封装良好的同步工具类Semaphore.CountDownL ...

  5. vuex传值的使用

    1.导入vuex import Vuex from 'vuex' Vue.use(Vuex); 2.创建store实例 let store = new Vuex.Store({ state:{ cou ...

  6. LGOJP1941 飞扬的小鸟

    题目链接 题目链接 题解 \(f[i][j]\)表示位置\((i,j)\)到达需要的最小点击数. \(f[i][j]=\min\{{f[i-1][j-kx]+k},f[i-1][j+y]\}\) \( ...

  7. BZOJ2938 [Poi2000]病毒 和 BZOJ5261 Rhyme

    [Poi2000]病毒 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码 ...

  8. http之browser抓包

    Chrome 抓包 详解谷歌Network 面板 快捷键:Control+Shift+I (Windows) or Command+Option+I (Mac) 控制器 补充知识: HAR Chrom ...

  9. Visual Studio 2017 许可证已过期解决方案

    1.卸载并重安VS2017 2.安装后打开VS2017,点击帮助=>注册产品,输入序列号NJVYC-BMHX2-G77MM-4XJMR-6Q8QF(企业版), KBJFW-NXHK6-W4WJM ...

  10. RCNN,Fast RCNN,Faster RCNN 的前生今世:(2)R-CNN

    Region CNN(RCNN)可以说是利用深度学习进行目标检测的开山之作.作者Ross Girshick多次在PASCAL VOC的目标检测竞赛中折桂,2010年更带领团队获得终身成就奖,如今供职于 ...