dart - 如何将数据发布到 dart 中的 https 服务器?

所以我在 Flutter 中构建应用程序时遇到了一个问题。 我需要将 JSON 数据发布到 https 服务器。由于该应用程序目前正在开发中,因此我们使用的是自签名证书。

我怎样才能在 Dart 语言中实现这一点?

下面是我用来通过 http 向网络服务器发出单个 post 请求的代码,但是每当我用 https 替换 http 时>(自签名)我收到一个错误:

HandshakeException:客户端中的握手错误(操作系统错误: CERTIFICATE_VERIFY_FAILED:自签名证书(handshake.cc:355))

 var url = 'http://192.168.1.40/registration.php'; //or https
 var data = {"email":"yyyy@xx.com","name":"xyz"};

 http.post(url, body:data)
     .then((response) {
   print("Response status: ${response.statusCode}");
   print("Response body: ${response.body}");
 }).catchError((error) => print(error.toString()));

我对 Flutter 和 Dart 还很陌生,请帮帮我。欢迎提出建议。

最佳答案

http.post 是一个方便的包装器,它在后台创建一个 IOClient。您可以将自己的 io HttpClient 传递给它,并且可以禁用证书检查,因此您只需像这样自己构建它们...

  bool trustSelfSigned = true;
  HttpClient httpClient = new HttpClient()
    ..badCertificateCallback =
        ((X509Certificate cert, String host, int port) => trustSelfSigned);
  IOClient ioClient = new IOClient(httpClient);
  ioClient.post(url, body:data);

  // don't forget to call ioClient.close() when done
  // note, this also closes the underlying HttpClient

bool trustSelfSigned 控制您是获得默认行为还是允许错误的证书。

https://stackoverflow.com/questions/49839729/

相关文章:

flutter - 如何解决家庭酿造的 flutter 医生问题?

flutter - "Could not connect to lockdownd"尝试运行 flu

dart - 如何在 Flutter 的 ScrollView 中限制滚动距离?

flutter - 在屏幕外构建小部件

dart - 按下时更改 float 按钮图标的方法

dart - Flutter Dismissible 坚持必须从树中删除列表项

dart - flutter 解析 NetworkImage 时如何捕获引发的异常?

android - 是否可以同时在 iOS 和 Android 模拟器上启用热重载?

dart - 使用 WidgetsApp 的应用导航示例

dart - 如何显示 HTML Assets 文件?