7

我正在从我的颤振应用程序发出 https 帖子请求。因为我在服务器中使用自签名 SSL 证书,所以当我点击 API 时,我收到状态码为 405,我无法连接,

如果我使用 HTTP 包,我会收到以下异常,

HandshakeException: Handshake error in client (OS Error: I/flutter ( 7107): CERTIFICATE_VERIFY_FAILED: self signed certificate(handshake.cc:352))

当我尝试使用 deo 包时,我得到 405 状态码,下面是它的代码,

Response response;
    final Dio dio = Dio();
    (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
    (HttpClient client) {
  client.badCertificateCallback =
      (X509Certificate cert, String host, int port) => true;
  return client;
};
  response = await dio.post(loginURL, data: {"username": username, "password": password});
  print(response.data.toString());
  print(response.statusCode);

我试图通过制作来避免 SSL 握手

 client.badCertificateCallback =
          (X509Certificate cert, String host, int port) => true;

仍然无法使用任何其他解决方案?

4

3 回答 3

5

这对我有用

void main() {
  HttpOverrides.global = new MyHttpOverrides();
  runApp(MyApp());
}

class MyHttpOverrides extends HttpOverrides{
  @override
  HttpClient createHttpClient(SecurityContext context){
    return super.createHttpClient(context)
      ..badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
  }
}

class MyApp extends StatelessWidget {
.....
于 2021-10-03T16:51:15.810 回答
1
    DioForNative dio = DioForNative();
    DefaultHttpClientAdapter httpClient = dio.httpClientAdapter;
    httpClient.onHttpClientCreate = (HttpClient client) {
      client.badCertificateCallback =
          (X509Certificate cert, String host, int port) {
        return true;
      };
    };

然后你可以发出 dio.post 和 dio.get 请求。

于 2021-09-16T12:50:28.323 回答
0

正如前面在评论中提到的,HTTP 请求通过,因为它返回一个405 error. HTTP 错误 405 通常点通常被定义为“Method not allowed”,通常是由不正确的请求方法引起的。您可能需要检查服务器是否可以接收您发送的请求。

于 2021-05-13T13:00:47.607 回答