dio加入自定义contentType web服务器加入 url token参数

This commit is contained in:
2026-03-11 11:58:51 +08:00
parent 9e3a7d5721
commit a8e4ad5a20
3 changed files with 26 additions and 6 deletions

View File

@@ -126,12 +126,14 @@ class TraceDio {
{Object? data, {Object? data,
Map<String, dynamic>? queryParameters, Map<String, dynamic>? queryParameters,
sf.Request? request, sf.Request? request,
String? contentType,
Duration? receiveTimeout}) async { Duration? receiveTimeout}) async {
return await _dio.post(url, return await _dio.post(url,
data: data, data: data,
queryParameters: queryParameters, queryParameters: queryParameters,
options: Options( options: Options(
receiveTimeout: receiveTimeout, receiveTimeout: receiveTimeout,
contentType: contentType,
headers: getHeader(request: request))); headers: getHeader(request: request)));
} }
@@ -140,12 +142,14 @@ class TraceDio {
{Object? data, {Object? data,
Map<String, dynamic>? queryParameters, Map<String, dynamic>? queryParameters,
sf.Request? request, sf.Request? request,
String? contentType,
Duration? receiveTimeout}) async { Duration? receiveTimeout}) async {
return await _dio.put(url, return await _dio.put(url,
data: data, data: data,
queryParameters: queryParameters, queryParameters: queryParameters,
options: Options( options: Options(
receiveTimeout: receiveTimeout, receiveTimeout: receiveTimeout,
contentType: contentType,
headers: getHeader(request: request))); headers: getHeader(request: request)));
} }
@@ -154,13 +158,16 @@ class TraceDio {
{Object? data, {Object? data,
Map<String, dynamic>? queryParameters, Map<String, dynamic>? queryParameters,
sf.Request? request, sf.Request? request,
String? contentType,
Duration? receiveTimeout}) async { Duration? receiveTimeout}) async {
return await _dio.delete( return await _dio.delete(
url, url,
data: data, data: data,
queryParameters: queryParameters, queryParameters: queryParameters,
options: Options( options: Options(
receiveTimeout: receiveTimeout, headers: getHeader(request: request)), contentType: contentType,
receiveTimeout: receiveTimeout,
headers: getHeader(request: request)),
); );
} }
} }

View File

@@ -211,7 +211,7 @@ class ShelfWebServer implements WebServer {
addRouter(k, p[0], handler); addRouter(k, p[0], handler);
continue; continue;
} }
addRouter(k, p[0], (req, [a, b, c, d, e, f]) async { addRouter(k, p[0], (Request req, [a, b, c, d, e, f]) async {
//从request中获取token并解码传入 //从request中获取token并解码传入
bool auth = true; bool auth = true;
if (p.length >= 5) { if (p.length >= 5) {
@@ -223,7 +223,11 @@ class ShelfWebServer implements WebServer {
if (auth) { if (auth) {
String? token = req.headers["token"]; String? token = req.headers["token"];
if (token == null) {
token = req.url.queryParameters["token"];
}
bool check = true; bool check = true;
String checkMsg = "token为空";
if (tokenCheck != null) { if (tokenCheck != null) {
//自定义token校验函数存在 //自定义token校验函数存在
var checkResult = await tokenCheck!(token); var checkResult = await tokenCheck!(token);
@@ -241,7 +245,8 @@ class ShelfWebServer implements WebServer {
check = true; check = true;
} catch (e) { } catch (e) {
//jwt解码失败 //jwt解码失败
print(e); print("token: $token msg: $e");
checkMsg = "身份认证失败";
check = false; check = false;
} }
} else { } else {
@@ -250,7 +255,7 @@ class ShelfWebServer implements WebServer {
} }
if (!check) { if (!check) {
response = response =
Response.ok(jsonEncode({"code": -10000, "msg": "token为空"})); Response.ok(jsonEncode({"code": -10000, "msg": checkMsg}));
return setResponseHeader(response, p[1].type); return setResponseHeader(response, p[1].type);
} }
} }

View File

@@ -22,7 +22,7 @@ class WebSocket {
//判断是否启用自动重连 //判断是否启用自动重连
if (_config.reConnect && _reConnect) { if (_config.reConnect && _reConnect) {
//2秒后重连 //2秒后重连
Future.delayed(Duration(seconds: 2), () { Future.delayed(Duration(seconds: _config.reConnectTime), () {
connect(); connect();
}); });
} }
@@ -56,6 +56,9 @@ class WebSocket {
_timer = null; _timer = null;
//尝试重连 //尝试重连
_channel = null; _channel = null;
if (_config.onClose != null) {
_config.onClose!();
}
reConnect(); reConnect();
}); });
//定期发送心跳包 //定期发送心跳包
@@ -77,9 +80,14 @@ class WebSocket {
class WebSocketConfig { class WebSocketConfig {
String host; String host;
bool reConnect; bool reConnect;
int reConnectTime;
void Function(String) messgae; void Function(String) messgae;
void Function()? onOpen; void Function()? onOpen;
void Function()? onClose;
WebSocketConfig(this.host, this.messgae, WebSocketConfig(this.host, this.messgae,
{this.reConnect = true, this.onOpen}); {this.reConnect = true,
this.onOpen,
this.onClose,
this.reConnectTime = 2});
} }