flutter - 尝试使用 dio 传递客户端证书时收到空白 httpException 消息
问题描述
我在尝试使用 Dio 包提交客户端证书时收到空白 httpException 消息。
DioErrorType (DioErrorType.DEFAULT) : HttpException (HttpException: , uri = [API_PATH])
与邮递员请求时,相同的证书正在工作。
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Thu, 21 Jan 2021 05:56:55 GMT
下面是我正在使用的代码
Future<List<int>> loadCertificate(String assetPath) async {
return (await rootBundle.load(assetPath)).buffer.asUint8List();
}
final List<int> certificateChainBytes =
await loadCertificate('assets/certs/client-cert1.pfx');
final List<int> keyBytes =
await loadCertificate('assets/certs/client-cert1.pfx');
final Dio dio = Dio();
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
(client) {
final SecurityContext sc = SecurityContext()
..useCertificateChainBytes(certificateChainBytes, password: 'Secret')
..usePrivateKeyBytes(keyBytes, password: 'Secret');
final HttpClient httpClient = HttpClient(context: sc);
httpClient.badCertificateCallback =
(X509Certificate cert, String host, int port) {
print('badcertificatecallback');
print(cert.issuer);
return true;
};
return httpClient;
};
try {
url = url.contains('http') ? url : '${PsConfig.ps_app_url}$url';
print('API Response from $url');
final Response response =
await dio.get(url, options: Options(headers: getHeaders()));
return processHttpResponse(obj, response);
} on diolib.DioError catch (e) {
inspect(e);
return processDioResponse(obj, e);
} finally {
dio.close();
}
我对此很陌生并且被卡住了。先感谢您。
解决方案
推荐阅读
- python-3.x - how to connect api to label widget in python tkinter?
- qt - QML 图像不拉伸/适合 SVG
- python - 如何摆脱 matpotlib 子图中的双打印轴
- android - android中BLE设备的蓝牙配对问题
- python - 延迟 python 日志记录和 pylint 日志记录格式插值
- postgresql - 从 Postgresql 中的多个数据库中检索表名?
- wireshark - 同一个http2帧的不同wireshark解码结果?
- android - Blackberry Access App 无法在 Android 中打开相机以扫描条码
- jfrog - 我可以删除默认的 Maven 存储库吗?
- javascript - chartj 模板不接受新数据集