【发布时间】:2020-03-10 18:55:38
【问题描述】:
我有一个 Flutter 应用程序正在尝试使用 Dio 包连接到服务器 API。服务器使用自签名证书,这意味着使用 Dio 解决方法来验证证书以连接到服务器(请参阅https://pub.dev/packages/dio#https-certificate-verification)。
以下是我目前所拥有的:
String url = 'https://...'; // Server API URL
Map<String, dynamic> data = ... // Request body
String PEM = "XXXXX"; // Certificate content
Dio dio = Dio();
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
client.badCertificateCallback=(X509Certificate cert, String host, int port){
if (cert.pem == PEM) {
// Verify the certificate
return true;
}
return false;
};
};
Response response = await dio.post(url, data: data);
但是这会引发 HttpException:
HttpException: Failed to parse HTTP, uri = https://... // Server API url
异常中没有显示其他信息。 response.data 的值为null。
请务必注意,服务器实际上正在响应数据 - 所以这似乎是 Flutter / 客户端问题。服务器响应是字符串字段和值的标准对象:
{
"status": "ok",
"token": "...",
"field1": "...",
"field2": "...",
"field3": "...",
...
}
我该如何解决这个问题?
【问题讨论】:
-
你能提供实际的URI吗?
-
您能否分享更多信息,以便我们从头开始重现该问题?
-
您能在涉及任何 d’art 代码之前向我们展示网络响应吗?