serializeRequest static method

Uint8List serializeRequest(
  1. Request request
)

Implementation

static Uint8List serializeRequest(http.Request request) {
  // 自动更新 Content-Length
  //request.headers['content-length'] = request.bodyBytes.length.toString();
  // 移除 chunked 编码,因为我们现在是完整发送
  request.headers.remove('transfer-encoding');

  final requestLine = '${request.method} ${request.url} HTTP/1.1\r\n';
  final headersString = request.headers.entries
      .map((e) => '${e.key}: ${e.value}\r\n')
      .join('');
  final endOfHeaders = '\r\n';

  final head = utf8.encode(requestLine + headersString + endOfHeaders);
  return Uint8List.fromList([...head, ...request.bodyBytes]);
}