一尘不染

如何在Dart中将数据发布到https服务器?

flutter

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

如何用飞镖语言实现呢?

以下是用于通过 http 向Web服务器发出单个发布请求的代码,但是每当我用 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很陌生,请帮帮我。建议将受到欢迎。


阅读 221

收藏
2020-08-13

共1个答案

一尘不染

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控制您是采用默认行为还是允许不良证书。

2020-08-13