1 测试Http和HttpClient


  http: ^0.12.2



    import 'package:http/http.dart' as http;
    import 'dart:convert';
    import 'dart:io';

2 代码实现

    import 'package:flutter/material.dart';
    import 'package:url_launcher/url_launcher.dart';
    import 'package:http/http.dart' as http;
    import 'dart:convert';
    import 'dart:io';
    void main() {
    class MyApp1 extends StatelessWidget {
      void getWeatherData() async {
          try {
            HttpClient httpClient = HttpClient();
            HttpClientRequest request = await httpClient.getUrl(Uri.parse("http://pv.sohu.com/cityjson?ie=utf-8"));
            HttpClientResponse response = await request.close();
            var result =  await response.transform(utf8.decoder).join();
          } catch (e) {
            print("get data fail $e");
          } finally {
      Widget build(BuildContext context) {
          return MaterialApp(
              title: 'open url',
              home: Scaffold(
                appBar: AppBar(
                  // Here we take the value from the MyHomePage object that was created by
                  // the App.build method, and use it to set our appbar title.
                  title: Text('hello flutter'),
                body: Center(
                  child: Column(
                    // Column is also a layout widget. It takes a list of children and
                    // arranges them vertically. By default, it sizes itself to fit its
                    // children horizontally, and tries to be as tall as its parent.
                    // Invoke "debug painting" (press "p" in the console, choose the
                    // "Toggle Debug Paint" action from the Flutter Inspector in Android
                    // Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
                    // to see the wireframe for each widget.
                    // Column has various properties to control how it sizes itself and
                    // how it positions its children. Here we use mainAxisAlignment to
                    // center the children vertically; the main axis here is the vertical
                    // axis because Columns are vertical (the cross axis would be
                    // horizontal).
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                        'hello word flutter',
                        onPressed: () {
                          const url = 'https://www.baidu.com';
                          http.get(url).then((response) {
                              print("状态 is ${response.statusCode}");
                              print("内容 is ${response.body}");
                        child: Text('test Http'),
                        onPressed: getWeatherData,
                        child: Text('test HttpClient get weather'),



3 运行结果

点击test Http日志打印如下

    I/flutter (27404): 状态 is 200
    I/flutter (27404): 内容 is <html>
    I/flutter (27404): <head>
    I/flutter (27404):     <script>
    I/flutter (27404):         location.replace(location.href.replace("https://","http://"));
    I/flutter (27404):     </script>
    I/flutter (27404): </head>
    I/flutter (27404): <body>
    I/flutter (27404):     <noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>
    I/flutter (27404): </body>
    I/flutter (27404): </html>

点击 test HttpClient get weather日志打印如下


I/flutter (27404): var returnCitySN = {"cip": "", "cid": "350100", "cname": "福建省福州市"};


微信公众号:编程入门到秃头 或扫描下面二维码