- 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();
},
)
],
),
);
}
}
网友评论