mirror of
https://github.com/wanghongenpin/proxypin.git
synced 2026-05-20 16:15:47 +08:00
支持head请求,修复手机端请求重写切换应用恢复原始的请求问题
This commit is contained in:
@@ -113,7 +113,7 @@ class ByteBuf {
|
||||
/// 解码
|
||||
abstract interface class Decoder<T> {
|
||||
/// 解码 如果返回null说明数据不完整
|
||||
T? decode(ByteBuf byteBuf);
|
||||
T? decode(ByteBuf byteBuf, {bool resolveBody = true});
|
||||
}
|
||||
|
||||
/// 编码
|
||||
@@ -139,7 +139,7 @@ abstract class HttpCodec<T extends HttpMessage> implements Codec<T> {
|
||||
T createMessage(List<String> reqLine);
|
||||
|
||||
@override
|
||||
T? decode(ByteBuf data) {
|
||||
T? decode(ByteBuf data, {bool resolveBody = true}) {
|
||||
//请求行
|
||||
if (_state == State.readInitial) {
|
||||
init();
|
||||
@@ -156,10 +156,10 @@ abstract class HttpCodec<T extends HttpMessage> implements Codec<T> {
|
||||
|
||||
//请求体
|
||||
if (_state == State.body) {
|
||||
var result = bodyReader!.readBody(data.readBytes(data.readableBytes()));
|
||||
if (result.isDone) {
|
||||
var result = resolveBody ? bodyReader!.readBody(data.readBytes(data.readableBytes())) : null;
|
||||
if (!resolveBody || result?.isDone == true) {
|
||||
_state = State.done;
|
||||
message.body = result.body;
|
||||
message.body = result?.body;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import 'dart:convert';
|
||||
|
||||
import 'package:network_proxy/network/host_port.dart';
|
||||
import 'package:network_proxy/network/http/websocket.dart';
|
||||
import 'package:network_proxy/network/util/logger.dart';
|
||||
import 'package:network_proxy/utils/compress.dart';
|
||||
|
||||
import 'http_headers.dart';
|
||||
@@ -272,7 +273,7 @@ enum HttpMethod {
|
||||
try {
|
||||
return HttpMethod.values.firstWhere((element) => element.name == name.toUpperCase());
|
||||
} catch (error) {
|
||||
print("$name :$error");
|
||||
logger.e("HttpMethod error $name :$error");
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,23 +68,9 @@ class WebSocketFrame {
|
||||
|
||||
///websocket 解码器
|
||||
class WebSocketDecoder {
|
||||
// Add a buffer to store incomplete data
|
||||
final buffer = BytesBuilder();
|
||||
|
||||
WebSocketFrame? decode(Uint8List byteBuf) {
|
||||
// Add the new data to the buffer
|
||||
buffer.add(byteBuf);
|
||||
|
||||
// Try to parse a WebSocket frame from the buffer
|
||||
var data = buffer.toBytes();
|
||||
if (canParseWebSocketFrame(data)) {
|
||||
var frame = _parseWebSocketFrame(data);
|
||||
|
||||
buffer.clear();
|
||||
return frame;
|
||||
}
|
||||
|
||||
return null;
|
||||
var frame = _parseWebSocketFrame(byteBuf);
|
||||
return frame;
|
||||
}
|
||||
|
||||
bool canParseWebSocketFrame(Uint8List data) {
|
||||
|
||||
Reference in New Issue
Block a user