zoukankan      html  css  js  c++  java
  • 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:

  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/zhangqie/p/10870999.html
Copyright © 2011-2022 走看看