📜  Flutter – 向互联网发送数据(1)

📅  最后修改于: 2023-12-03 15:30:49.053000             🧑  作者: Mango

Flutter – 向互联网发送数据

在Flutter中,你可以使用Dart语言来向互联网发送数据。本文将介绍两种常见的方式,分别是通过HTTP发起网络请求和使用WebSocket建立双向通信。

通过HTTP发起网络请求
发送GET请求

Flutter提供了http包来方便地发送HTTP请求。要发送GET请求,可以使用如下代码:

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

final response = await http.get(Uri.parse('https://example.com'));

这里使用了Dart语言中的async/await机制,将异步请求转化为同步代码。http.get()函数返回一个Future对象,该对象表示异步操作的结果。我们使用await关键字等待异步操作完成,然后获取返回的结果。

http.get()函数接收一个Uri对象作为参数,用于指定请求的地址和参数。你可以在Uri对象中使用queryParameters字段来指定请求的参数。例如:

final response = await http.get(Uri.parse('https://example.com/search?q=flutter'));

上面的代码将会向https://example.com/search发送一个GET请求,其参数为q=flutter

发送POST请求

要发送POST请求,可以使用如下代码:

final response = await http.post(Uri.parse('https://example.com'),
                                 body: {'name': 'John', 'age': '30'});

http.post()函数除了接收一个Uri对象外,还接收一个body参数,用于指定请求的实体。在上面的代码中,我们使用了一个Map对象作为body参数。http.post()函数会将Map对象转化为字符串,并设置Content-Type头字段为application/x-www-form-urlencoded

如果想要发送JSON格式的数据,则需要将bytes参数设置为请求体的字节流。例如:

import 'dart:convert';

final data = {'name': 'John', 'age': 30};
final body = json.encode(data);

final response = await http.post(Uri.parse('https://example.com'),
                                 headers: {'Content-Type': 'application/json'},
                                 body: body);

在上面的代码中,我们使用了Dart语言内置的json库来将Map对象转化为JSON格式字符串,并将Content-Type头字段设置为application/json

使用WebSocket建立双向通信

如果你需要建立双向通信,那么WebSocket是一个不错的选择。Flutter中同样提供了WebSocket类来支持WebSocket通信。要建立WebSocket连接,可以使用如下代码:

import 'package:web_socket_channel/io.dart';

final channel = IOWebSocketChannel.connect('wss://echo.websocket.org');

channel.stream.listen((data) {
  print('Received: $data');
});

channel.sink.add('Hello, WebSocket!');

在上面的代码中,我们创建了一个IOWebSocketChannel对象,并使用connect()函数建立和wss://echo.websocket.org地址的WebSocket连接。然后,我们通过stream属性监听来自WebSocket服务器的数据,并通过sink属性发送数据到WebSocket服务器。

需要注意的是,当你完成WebSocket通信时,应该使用close()函数来关闭WebSocket连接:

channel.sink.close();

以上就是本文对Flutter中向互联网发送数据的介绍,如果你想了解更多,可以参考Dart语言和Flutter的官方文档。