Flutter网络请求插件hurl的使用

Flutter网络请求插件hurl的使用

hurl

工具类和类库,用于处理Insomnia API客户端集合。 (正在进行中)


以下是一个完整的示例,展示了如何使用hurl插件进行网络请求。

import 'package:hurl/hurl.dart';

void main() {
  // 初始化Hurl客户端
  var hurlClient = HurlClient();

  // 发送GET请求
  hurlClient.get('https://jsonplaceholder.typicode.com/posts')
      .then((response) {
    print('Response status code: ${response.statusCode}');
    print('Response body: ${response.body}');
  })
  .catchError((error) {
    print('Error occurred: $error');
  });
}

更多关于Flutter网络请求插件hurl的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter网络请求插件hurl的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


hurl 是一个轻量级的、用于在 Flutter 应用中发送 HTTP 请求的插件。它提供了简单易用的 API,可以轻松地进行网络请求和管理。以下是使用 hurl 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 hurl 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  hurl: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 基本用法

2.1 发送 GET 请求

import 'package:hurl/hurl.dart';

void fetchData() async {
  var response = await Hurl.get('https://jsonplaceholder.typicode.com/posts/1');
  
  if (response.statusCode == 200) {
    print('Response data: ${response.body}');
  } else {
    print('Failed to load data');
  }
}

2.2 发送 POST 请求

import 'package:hurl/hurl.dart';

void postData() async {
  var response = await Hurl.post(
    'https://jsonplaceholder.typicode.com/posts',
    body: {
      'title': 'foo',
      'body': 'bar',
      'userId': 1,
    },
  );

  if (response.statusCode == 201) {
    print('Post created: ${response.body}');
  } else {
    print('Failed to create post');
  }
}

2.3 处理 JSON 数据

hurl 还提供了直接解析 JSON 的功能:

import 'package:hurl/hurl.dart';

void fetchJsonData() async {
  var response = await Hurl.get('https://jsonplaceholder.typicode.com/posts/1');
  
  if (response.statusCode == 200) {
    var jsonData = response.json;
    print('Title: ${jsonData['title']}');
  } else {
    print('Failed to load data');
  }
}

3. 高级用法

3.1 设置请求头

你可以通过 headers 参数设置请求头:

var response = await Hurl.get(
  'https://jsonplaceholder.typicode.com/posts/1',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN',
  },
);

3.2 处理错误

你可以使用 try-catch 块来处理网络请求中的错误:

try {
  var response = await Hurl.get('https://jsonplaceholder.typicode.com/posts/1');
  print('Response data: ${response.body}');
} catch (e) {
  print('Error: $e');
}

3.3 超时设置

你可以通过 timeout 参数设置请求的超时时间:

var response = await Hurl.get(
  'https://jsonplaceholder.typicode.com/posts/1',
  timeout: Duration(seconds: 5),
);

4. 完整示例

以下是一个完整的 Flutter 应用程序示例,使用 hurl 发送 GET 请求并显示结果:

import 'package:flutter/material.dart';
import 'package:hurl/hurl.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Hurl Example'),
        ),
        body: Center(
          child: FetchDataWidget(),
        ),
      ),
    );
  }
}

class FetchDataWidget extends StatefulWidget {
  [@override](/user/override)
  _FetchDataWidgetState createState() => _FetchDataWidgetState();
}

class _FetchDataWidgetState extends State<FetchDataWidget> {
  String _data = 'Loading...';

  [@override](/user/override)
  void initState() {
    super.initState();
    fetchData();
  }

  void fetchData() async {
    try {
      var response = await Hurl.get('https://jsonplaceholder.typicode.com/posts/1');
      if (response.statusCode == 200) {
        setState(() {
          _data = response.body;
        });
      } else {
        setState(() {
          _data = 'Failed to load data';
        });
      }
    } catch (e) {
      setState(() {
        _data = 'Error: $e';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Text(_data);
  }
}
回到顶部