Flutter 使用 http.dart 添加客户端证书来请求

yon*_*tan 5 client-certificates dart dart-http flutter

我正在尝试将客户端证书从http.dart包加载到 http.client 。

我看到了有关如何使用HttpClient类执行此操作的多个答案,例如这个答案:Flutter add selfsignedcertificatefromassetfolder,这基本上建议执行以下代码

ByteData data = await rootBundle.load('assets/raw/certificate.pfx');
SecurityContext context = SecurityContext.defaultContext;
context.useCertificateChainBytes(data.buffer.asUint8List());
context.usePrivateKeyBytes(data.buffer.asUint8List());
client = HttpClient(context: context);
Run Code Online (Sandbox Code Playgroud)

但我必须使用http.darthttp.client包,因为我有一个接受 类似内容的函数

import 'package:http/http.dart' as http;

var httpClient = http.Client();
// i'd like to configure this httpClient to use a specific client certificate

var client = MyClient(httpClient);

....

MyClient (http.Client? httpClient) {
    -- some constructor logic --
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以配置http.client使用客户端证书吗?

谢谢。

Ric*_*eap 5

不要使用http.Client()构造函数。相反,构造 an (可以使用 asIOClient的子类来代替)。Client传入你的HttpClient.

import 'dart:io';

import 'package:http/io_client.dart';

void main() async {
  final context = SecurityContext.defaultContext;
  // modify context as needed
  final httpClient = HttpClient(context: context);
  final client = IOClient(httpClient);

  await client.get(Uri.parse('https://somewhere.io'));
}
Run Code Online (Sandbox Code Playgroud)