博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flutter -------- 网络请求之HttpClient
阅读量:5107 次
发布时间:2019-06-13

本文共 2516 字,大约阅读时间需要 8 分钟。

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

 

转载于:https://www.cnblogs.com/zhangqie/p/10870999.html

你可能感兴趣的文章
Android-多线程AsyncTask
查看>>
第一个Spring冲刺周期团队进展报告
查看>>
C++函数基础知识
查看>>
红黑树 c++ 实现
查看>>
Android 获取网络链接类型
查看>>
报表服务框架:WEB前端UI
查看>>
5.9UDP客户端服务器-基于OK6410
查看>>
java自学基础、项目实战网站推荐
查看>>
软件包的使用
查看>>
linux中启动与终止lnmp的脚本
查看>>
gdb中信号的处理[转]
查看>>
学习Javascript闭包(Closure)
查看>>
LeetCode【709. 转换成小写字母】
查看>>
如何在Access2007中使用日期类型查询数据
查看>>
Jzoj4757 树上摩托
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
基于docker的spark-hadoop分布式集群之一: 环境搭建
查看>>
oracle 几个时间函数探究
查看>>
第一个Java Web程序
查看>>
Atomic
查看>>