dio加入自定义contentType web服务器加入 url token参数
This commit is contained in:
@@ -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)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user