美文网首页
Flutter 网络请求

Flutter 网络请求

作者: StevenHu_Sir | 来源:发表于2019-11-30 13:18 被阅读0次
  • HttpClient(Dart内置API)
  • http第三方库
  • Dio第三方库

1.HttpClient(Dart内置API) 简单使用(Get/Post)

import 'dart:convert';
import 'dart:io';

import 'package:flutter/material.dart';

class HttpClientTest extends StatefulWidget {
  HttpClientTest({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _HttpClientTestState createState() => _HttpClientTestState();
}

class _HttpClientTestState extends State<HttpClientTest> {
  String _responseText = "";
  // Get方法
  _loadData() async {
    try {
      HttpClient httpClient = new HttpClient();
      HttpClientRequest request =
          await httpClient.getUrl(Uri.parse("https://www.phei.com.cn"));
      HttpClientResponse response = await request.close();
      _responseText = await response.transform(Utf8Decoder()).join();
      print(_responseText);
      httpClient.close();
    } catch (_) {
      print('请求异常:' + _.toString());
    }
  }
  // Post方法
  _loadDataPostMethod() async {
    try {
      HttpClient httpClient = new HttpClient();
      HttpClientRequest request =
          await httpClient.postUrl(Uri.parse("https://post.example.com"));
      request.headers.set('content-type', 'application/json');
      Map jsonMap = {'userid': '10000'};
      request.add(utf8.encode(json.encode(jsonMap)));
      HttpClientResponse response = await request.close();
      _responseText = await response.transform(Utf8Decoder()).join();
      print(_responseText);
      httpClient.close();
    } catch (_) {
      print('请求异常:' + _.toString());
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("HttpClient"),
      ),
      body: Column(
        children: <Widget>[
          RaisedButton(
            child: Text('HttpClient的get方式请求网络'),
            onPressed: () {
              _loadData();
            },
          )
        ],
      ),
    );
  }
}

2.http第三方库 简单使用(Get/Post)

import 'dart:convert';

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

class HttpTest extends StatefulWidget {
  HttpTest({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _HttpTestState createState() => _HttpTestState();
}

class _HttpTestState extends State<HttpTest> {
  _loadData() async {
    var client = http.Client();
    var uri = Uri.parse("https://www.phei.com.cn");
    http.Response response = await client.get(uri);
    print(utf8.decode(response.bodyBytes));
    client.close();
  }

  _loadDataPostMethod() async {
    var client = http.Client();
    Map<String, String> headerMap = {'userid': '10000'};
    http.Response response = await client
        .post("https://www.phei.com.cn", headers: headerMap, body: {});
    print(utf8.decode(response.bodyBytes));
    client.close();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("http"),
      ),
      body: Column(
        children: <Widget>[
          RaisedButton(
            child: Text('http的get方式请求网络'),
            onPressed: () {
              _loadData();
            },
          )
        ],
      ),
    );
  }
}

3.Dio第三方库简单使用

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

class DioTest extends StatefulWidget {
  DioTest({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _DioTestState createState() => _DioTestState();
}

class _DioTestState extends State<DioTest> {
  _loadData() async {
    try {
      Response response = await Dio().get("https://www.phei.com.cn");
      print(response);
    } catch (e) {
      print(e);
    }
  }

  _loadDataPostMethod() async {
    try {
      Response response = await Dio().post("https://www.phei.com.cn", data: {});
      print(response);
    } catch (e) {
      print(e);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("http"),
      ),
      body: Column(
        children: <Widget>[
          RaisedButton(
            child: Text('dio的get方式请求网络'),
            onPressed: () {
              _loadData();
            },
          )
        ],
      ),
    );
  }
}

相关文章

  • Flutter 网络请求框架封装

    Flutter 请求网络的三种方式 flutter 请求网络的方式有三种,分别是 Dart 原生的网络请求 Htt...

  • Flutter 网络请求框架封装

    Flutter 请求网络的三种方式 flutter 请求网络的方式有三种,分别是 Dart 原生的网络请求 Htt...

  • Flutter常用的Package

    Flutter搜索库 网络 dio 网络请求 http 网络请求 connectivity 网络状态改变(i...

  • flutter网络请求封装

    Flutter 网络请求框架封装

  • Flutter dio网络请求需在请求secret后的方式二:匿

    上一篇: Flutter dio网络请求需在请求secret后的方式一:请求时判断下一篇Flutter dio网络...

  • flutter抓包

    前言 老项目集成flutter以后,flutter页面网络请求使用的dio框架,发现charles无法抓取请求包 ...

  • Flutter 网络请求

    HttpClient(Dart内置API) http第三方库 Dio第三方库 1.HttpClient(Dart内...

  • Flutter网络请求

    在Flutter中常见的网络请求方式有三种:HttpClient、http库、dio库;注意:async 和 aw...

  • flutter网络请求

    在flutter中进行网络请求有多种方式,这里我使用的是dio。dio这个库被封装的很好,使用起来也很简单,但为了...

  • Flutter网络请求

    一. 网络请求的方式 在Flutter中常见的网络请求方式有三种:HttpClient、http库、dio库; 1...

网友评论

      本文标题:Flutter 网络请求

      本文链接:https://www.haomeiwen.com/subject/jzfnwctx.html