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

qoefvg9y  于 2022-12-05  发布在  Flutter
关注(0)|答案(1)|浏览(149)

我正在尝试从**http.dart包将客户端证书加载到http.client。
关于如何使用
HttpClient**类完成此任务,我看到了多个答案,例如以下答案:Flutter add self signed certificate from asset folder,基本上建议执行以下代码

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);

但是我必须使用http.dart包,因为我有一个接受http.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 --
}

有没有办法配置http.client以使用客户端证书?

  • 谢谢-谢谢
bwntbbo3

bwntbbo31#

不要使用http.Client()构造函数,而是构造一个IOClient(它是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'));
}

相关问题