对于UI应该略有不同的iOS和Android,必须有检测到您正在运行哪一个的方式,但在文档我找不到它.它是什么?
我的服务器在调用其HTTPS API时会提供一个自签名证书。我在文件asset夹中有证书文件,并在pubspec.yaml
尝试将证书传递到SecurityContext然后使用该上下文创建时引用了它的路径HttpClient。但是我将证书传递给的SecurityContext方式不起作用。这是代码:
Future<ByteData> getFileData(String path) async {
return await rootBundle.load(path);
}
void initializeHttpClient() async {
try {
Future<ByteData> data = getFileData('assets/raw/certificate.crt');
await data.then((value) {
var context = SecurityContext.defaultContext;
context.useCertificateChainBytes(value.buffer.asInt8List());
client = HttpClient(context: context);
});
} on Exception catch (exception) {
print(exception.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
将SecurityContext有两种方法:
1)useCertificateChain()此接受文件路径。但是,当我在资产文件夹中提供文件的路径时(“ assets / raw / certificate.crt”)。它说找不到文件。
2)useCertificateChainBytes()上面的代码就是使用这种方法。但这也给我类似的错误(文件结尾意外)。
截至目前的解决方案
我使用绕过它client.badCertificateCallback = (X509Certificate cert, String host, int port)=> true;。
但我想使其与证书一起使用