serializeResponse static method

Uint8List serializeResponse(
  1. Response response
)

Implementation

static Uint8List serializeResponse(http.Response response) {
  // 自动更新 Content-Length
  // response.headers['content-length'] = response.bodyBytes.length.toString();
  // 移除 chunked 编码,因为我们现在是完整发送
  final headers = Map<String, String>.from(response.headers);
  headers.remove('transfer-encoding');

  final statusLine = 'HTTP/1.1 ${response.statusCode} ${response.reasonPhrase ?? ''}\r\n';
  final headersString = headers.entries
      .map((e) => '${e.key}: ${e.value}\r\n')
      .join('');
  final endOfHeaders = '\r\n';

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