flutter 每天一个知识点 网络请求 2025-07-17

2025-07-16  本文已影响0人  胡修波

步骤
1、创建客户端
2、创建request ---> url uri
3、获得response
4、客户端进行关闭

一、dart中自带网络库

void main(List<String> arguments) async {
  String uri = "http://weather.com.cn/data/sk/101010100.html";
  await httpClient(uri);
}


/// dart中自带网络库
Future<void> httpClient(String uri) async {
  HttpClient client = HttpClient();
  HttpClientRequest request = await client.getUrl(Uri.parse(uri));
  HttpClientResponse response = await request.close();
  print("huxiubo -----> ${response.statusCode}");
  var result = await response.transform(utf8.decoder).join();
  print("huxiubo -----> $result");
}

二、dio 国内常用(最简单,功能强大)

void main(List<String> arguments) async {
  String uri = "http://weather.com.cn/data/sk/101010100.html";
  await dioRequest(uri);
}

Future<void> dioRequest(String uri) async {
   Dio dio = Dio();
  var result = await dio.get(uri); //  await dio.getUri(Uri.parse(uri));
  print("====>  ${result}");
}

三、flutter 推荐 http (用的最多)

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

void main(List<String> arguments) async {
  // 1、创建客户端
  // 2、创建request ---> url uri
  // 3、获得response
  // 4、客户端进行关闭
  String uri = "http://weather.com.cn/data/sk/101010100.html";

  await httpMethod(uri);
}

Future<void> httpMethod(String uri) async {
  http.Client client = http.Client();
  Response response = await client.get(Uri.parse(uri));
  
  if (response.statusCode == 200) {
    String text = utf8.decode(response.bodyBytes);
    // 另一种方法
   //  Utf8Decoder utf8decoder = const Utf8Decoder(); //fix 中文乱码
   //  String bodyString = utf8decoder.convert(response.bodyBytes);
    print(text);
  }
}
上一篇 下一篇

猜你喜欢

热点阅读