zoukankan      html  css  js  c++  java
  • Flutter -------- Http库实现网络请求

    第三方库 http实现网络请求,包含get,post

    http库文档:https://pub.dev/packages/http

    1.添加依赖

    dependencies:
      http: ^0.12.0 #latest version

    2.导入库

    import 'package:http/http.dart' as http; //导入前需要配置

    get

    var data;
    
      _fetchGet() async {
        Map newTitle;
        final response =
            await http.get('https://jsonplaceholder.typicode.com/posts/1');
        final responseJson = json.decode(response.body);
        print("请求成功 ---------- "+responseJson.toString());
        newTitle = responseJson;
    
        setState(() {
          data = newTitle['title'];
          print("title====" + data);
        });
      }

    post

    void _httpPost() async {
        //头部
        var headers = Map<String, String>();
        headers["loginSource"] = "IOS";
        headers["useVersion"] = "3.1.0";
        headers["isEncoded"] = "1";
        headers["bundleId"] = "com.nongfadai.iospro";
        headers["loginSource"] = "IOS";
        headers["Content-Type"] = "application/json";
    
        //参数
    
        Map params = {'v': '1.0','month':'7','day':'25','key':'bd6e35a2691ae5bb8425c8631e475c2a'};
    
        // 嵌套两层都可以,但是具体哪个好还有待确认????
        var jsonParams = utf8.encode(json.encode(params));
        // var jsonParams = json.encode(params);
    
        var httpClient = http.Client();
    
        var uri = Uri.parse("http://api.juheapi.com/japi/toh");
    
        http.Response response =
        await httpClient.post(uri, body: jsonParams, headers: headers);
    
        if (response.statusCode == HttpStatus.ok) {
          print('请求成功');
          print(response.headers);//打印头部信息
          print("post------${response.body}");
        } else {
          print('请求失败 code 码${response.statusCode}');
        }
      }


    调用:

    class HttpMain extends StatefulWidget {
      @override
      createState() => new HttpPage();
    }
    
    class HttpPage extends State<HttpMain> {
    
      @override
      Widget build(BuildContext context) {
        _fetchGet();
        _httpPost();
        return new MaterialApp(
          title: 'Fetch Data Example',
          theme: new ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: new Scaffold(
            appBar: new AppBar(
              title: new Text('Fetch Data Example'),
            ),
            body: new Center(
              child: new Text("$data"),
            ),
          ),
        );
      }
    }

    控制台

    get

    post

  • 相关阅读:
    AC日记——接苹果 洛谷 P2690
    AC日记——友好城市 洛谷 P2782
    AC日记——栈 洛谷 P1044
    AC日记——L国的战斗之间谍 洛谷 P1916
    AC日记——[USACO1.1]坏掉的项链Broken Necklace 洛谷 P1203
    AC日记——[USACO1.5]数字三角形 Number Triangles 洛谷 P1216
    Codevs 1048 石子归并
    Codevs 1138 聪明的质监员 2011年NOIP全国联赛提高组
    HDU 1575 Tr A
    Codevs 5059 一起去打CS
  • 原文地址:https://www.cnblogs.com/zhangqie/p/10871062.html
Copyright © 2011-2022 走看看