今天来说说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:

最新文章

  1. 7.3 数据注解特性之ConcurrencyCheck特性【Code-First系列】
  2. RoboGuice 3.0 (三)总结篇
  3. eclipse中导入jar文件的源码
  4. 在win7-64bit环境下,boa-constructor 0.6.1 的palette面板中没有控件图标的解决方法
  5. 重温WCF之构建一个简单的WCF(一)(1)通过控制台和IIS寄宿服务
  6. 机器学习(一) 从一个R语言案例学线性回归
  7. BroadcastReceiver的简介
  8. Python argparse
  9. drop,truncate与delete的区别
  10. 【Dijkstra】
  11. NHibernate加载DLL错误
  12. Linux 硬连接和软连接的原理 (in使用)
  13. 转:Xshell显示找不到匹配的outgoing encryption算法怎么办
  14. SQL case when
  15. 教程二 网页和lua交互修改openwrt
  16. 强化学习(十)Double DQN (DDQN)
  17. Mac ssh 免密码登录 Mac 或者 Linux
  18. 解决Geoserver请求跨域的几种思路,第二种思路用过
  19. java多线程wait()方法必须放在while循环里面的原因探析
  20. 03_java基础(六)之CRUD实现

热门文章

  1. swagger是什么OpenAPI是什么
  2. (Linux基础学习)第八章:命令行历史,history
  3. UVA816 Abbott&#39;s Revenge (三元组BFS)
  4. weighted—-LR的理解与推广
  5. P2018 消息传递[dp]
  6. 零基础python教程-用Python设计你的第一个小游戏
  7. Hibernate中的Session
  8. jpg/jpeg/png格式的区别与应用场景
  9. 关于jquery的事件委托-bind,live,delegate,on的区别发展
  10. Idea导入maven项目