我的服务器正在运行带有 Nginx 托管 PHP 代码(使用证书和工作)的 Ubuntu,并“代理”用 NodeJS 编写的应用程序服务器代码。它一直在工作,直到我更改为 HTTPS。
我的 POST 请求典型用法:
var jsonRequest = //Some JSON.
Map<String, String> headers = {'Content-type': 'application/json'};
var response = await http.post(urls['auth'], body: jsonRequest,headers: headers);
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
E/flutter (25875): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: HandshakeException: Handshake error in client (OS Error:
E/flutter (25875): WRONG_VERSION_NUMBER(tls_record.cc:242))
E/flutter (25875): #0 IOClient.send (package:http/src/io_client.dart:33:23)
E/flutter (25875): <asynchronous suspension>
E/flutter (25875): #1 BaseClient._sendUnstreamed (package:http/src/base_client.dart:169:38)
E/flutter (25875): <asynchronous suspension>
E/flutter (25875): #2 BaseClient.post (package:http/src/base_client.dart:54:7)
E/flutter (25875): #3 post.<anonymous closure> (package:http/http.dart:70:16)
...
Run Code Online (Sandbox Code Playgroud)
Sis*_*sir 11
正如@Patrick 在评论中提到的,这是 TLS 不匹配的结果。
一般经验法则:如果服务器 (API) 基于https(TLS),则客户端应使用https. 如果服务器使用http(非 TLS),那么客户端应该使用http它来连接它。
在您的情况下,您尝试使用的 API 似乎是一种http类型,因此您应该使用 flutter 应用程序:
Uri.http(baseUrl, endPointUrl)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7763 次 |
| 最近记录: |