mirror of
https://github.com/haorendashu/nowser.git
synced 2025-12-18 02:04:18 +01:00
add quick action and desktop, bookmark add edit dialog
This commit is contained in:
101
lib/util/dio_util.dart
Normal file
101
lib/util/dio_util.dart
Normal file
@@ -0,0 +1,101 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:dio/io.dart';
|
||||
import 'package:dio_cookie_manager/dio_cookie_manager.dart';
|
||||
import 'package:cookie_jar/cookie_jar.dart';
|
||||
import 'dart:convert' as convert;
|
||||
|
||||
Dio? _dio;
|
||||
var cookieJar = CookieJar();
|
||||
|
||||
class DioUtil {
|
||||
static Dio getDio() {
|
||||
if (_dio == null) {
|
||||
_dio = Dio();
|
||||
if (_dio!.httpClientAdapter is IOHttpClientAdapter) {
|
||||
(_dio!.httpClientAdapter as IOHttpClientAdapter).onHttpClientCreate =
|
||||
(client) {
|
||||
client.badCertificateCallback = (cert, host, port) {
|
||||
return true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
// _dio!.options.connectTimeout = Duration(minutes: 1);
|
||||
// _dio!.options.receiveTimeout = Duration(minutes: 1);
|
||||
_dio!.options.headers["user-agent"] =
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36";
|
||||
_dio!.options.headers["accept-encoding"] = "gzip";
|
||||
CookieManager cookieManager = CookieManager(cookieJar);
|
||||
_dio!.interceptors.add(cookieManager);
|
||||
}
|
||||
return _dio!;
|
||||
}
|
||||
|
||||
static setCookie(String link, String key, String value) {
|
||||
cookieJar.saveFromResponse(Uri.parse(link), [Cookie(key, value)]);
|
||||
}
|
||||
|
||||
static Future<Map<String, dynamic>?> get(String link,
|
||||
[Map<String, dynamic>? queryParameters,
|
||||
Map<String, String>? header]) async {
|
||||
var dio = getDio();
|
||||
if (header != null) {
|
||||
dio.options.headers.addAll(header);
|
||||
}
|
||||
Response resp = await dio.get(link, queryParameters: queryParameters);
|
||||
if (resp.statusCode == 200) {
|
||||
if (resp.data is String) {
|
||||
return json.decode(resp.data);
|
||||
}
|
||||
return resp.data;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static Future<String?> getStr(String link,
|
||||
[Map<String, dynamic>? queryParameters,
|
||||
Map<String, String>? header]) async {
|
||||
var dio = getDio();
|
||||
if (header != null) {
|
||||
dio.options.headers.addAll(header);
|
||||
}
|
||||
Response resp =
|
||||
await dio.get<String>(link, queryParameters: queryParameters);
|
||||
if (resp.statusCode == 200) {
|
||||
return resp.data;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static Future<List<int>?> getBytes(String link,
|
||||
[Map<String, dynamic>? queryParameters,
|
||||
Map<String, String>? header]) async {
|
||||
var dio = getDio();
|
||||
if (header != null) {
|
||||
dio.options.headers.addAll(header);
|
||||
}
|
||||
Response resp =
|
||||
await dio.get<List<int>>(link, queryParameters: queryParameters);
|
||||
if (resp.statusCode == 200) {
|
||||
return resp.data;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static Future<Map<String, dynamic>> post(
|
||||
String link, Map<String, dynamic> parameters,
|
||||
[Map<String, String>? header]) async {
|
||||
var dio = getDio();
|
||||
if (header != null) {
|
||||
dio.options.headers.addAll(header);
|
||||
}
|
||||
Response resp = await dio.post(link, data: parameters);
|
||||
return resp.data;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user