1 测试Http和HttpClient
导入包:在pubspec.yaml里面导入
http: ^0.12.2
main.dart里面导入
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() {
runApp(MyApp1());
}
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();
print(result);
httpClient.close();
} catch (e) {
print("get data fail $e");
} finally {
}
}
@override
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>[
Text(
'hello word flutter',RaisedButton(
onPressed: () {
const url = 'https://www.baidu.com';
http.get(url).then((response) {
print("状态 is ${response.statusCode}");
print("内容 is ${response.body}");
}
);
},child: Text('test Http'),RaisedButton(
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": "220.250.29.154","cid": "350100","cname": "福建省福州市"};