我正在Dart中发送发帖请求。当我在Postman等API测试工具上进行测试时,它会给出响应。但是当我运行该应用程序时。它给了我以下错误:
E/flutter ( 6264): HandshakeException: Handshake error in client (OS Error: E/flutter ( 6264): CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:363))
这是我的函数代码-
Future getAccessToken(String url) async { try { http.post('url', body: { "email": "xyz@xyz.com", "password": "1234" }).then((response) { print("Reponse status : ${response.statusCode}"); print("Response body : ${response.body}"); var myresponse = jsonDecode(response.body); String token = myresponse["token"]; }); } catch (e) { print(e.toString()); }
这是完整的错误正文:
E/flutter ( 6264): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception: E/flutter ( 6264): HandshakeException: Handshake error in client (OS Error: E/flutter ( 6264): CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:363)) E/flutter ( 6264): #0 IOClient.send (package:http/src/io_client.dart:33:23) E/flutter ( 6264): <asynchronous suspension> E/flutter ( 6264): #1 BaseClient._sendUnstreamed (package:http/src/base_client.dart:169:38) E/flutter ( 6264): <asynchronous suspension> E/flutter ( 6264): #2 BaseClient.post (package:http/src/base_client.dart:54:7) E/flutter ( 6264): #3 post.<anonymous closure> (package:http/http.dart:70:16) E/flutter ( 6264): #4 _withClient (package:http/http.dart:166:20) E/flutter ( 6264): <asynchronous suspension> E/flutter ( 6264): #5 post (package:http/http.dart:69:5) E/flutter ( 6264): #6 _MyLoginFormState.getAccessToken (package:chart/main.dart:74:7) E/flutter ( 6264): <asynchronous suspension> E/flutter ( 6264): #7 _MyLoginFormState.build.<anonymous closure> (package:chart/main.dart:64:29)
我发现正确的方法(但很糟糕)是允许所有证书。
HttpClient client = new HttpClient(); client.badCertificateCallback = ((X509Certificate cert, String host, int port) => true); String url ='xyz@xyz.com'; Map map = { "email" : "email" , "password" : "password" }; HttpClientRequest request = await client.postUrl(Uri.parse(url)); request.headers.set('content-type', 'application/json'); request.add(utf8.encode(json.encode(map))); HttpClientResponse response = await request.close(); String reply = await response.transform(utf8.decoder).join(); print(reply);