Flutter -------- 网络请求之HttpClient

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

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值