Flutter 项目实战 注册接口实现https协议访问(三)
实现https协议访问接口
/ 获取SSL 证书 /
登录 - 腾讯云
并注册域名获取 SSL 证书
下载jks格式的证书
/ SpringBoot 工程里面配置JSK证书 /
证书配置
将下载好的证书压缩包(zip)解压得到证书 密码 和 jks 文件
将jks证书复制到SpringBoot工程resources目录下
https协议访问接口的配置
打开 application.properties 文件 , 添加可进行https协议访问接口的配置
#http端口号 server.http.port=8080 #https端口号 server.port=8081 #证书的路径. server.ssl.key-store=classpath:smallhello123456.site.jks #证书密码,请修改为您自己证书的密码. server.ssl.key-store-password=xs1orvy35bp07 server.ssl.key-password=xs1orvy35bp07访问接口
运行SpringBoot工程 , 然后测试接口
访问注册提示 : Bad Request This combination of host and port requires TLS , 大概意思就是接口访问需要证书较验
访问接口时, 需要在访问地址前拼接https
/ MySQL文件部署到腾讯云服务器 /
购买腾讯云服务器
我这里购买的Windows云服务器 , 可以直接通过网络登录云服务器 .如果是电脑是Windows系统的 可以直接使用电脑自带的远程桌面登录 ; 如果电脑是 Mac 系统的也可以通过Microsoft Remote Desktop Beta 进行远程登录云服务器 .
导出 MySql 文件
配置访问云服务器的参数
这里使用的的Mac系统, 所以是用了Microsoft Remote Desktop Beta 进行远程登录云服务器 .
登录Windows云服务器查看公网IP或者 通过自己的腾讯云账号查看购买的云服务器IP地址 .
设置 User Account (就是云服务器登录的账号和密码) .
Windows云服务器共享Mac本地磁盘上的文件
云服务器安装MySQL环境
云服务器配置环境变量
重新启动云服务器 查看MySQL是否安装成功
mysql -V
MySQL文件部署到云服务器
通过云服务器共享本地Mac电脑的磁盘, 将 chatdb.sql 复制到云服务器 C:\Project\Java 目录下 ,执行如下命令进行数据库部署到云服务器 .
mysql -u root -p #输入密码 create database chatdb character set utf8; #进入chatdb 数据库 use chatdb #导入sql文件 source C:\Project\Java\chatdb.sql #查看是否导入成功 show tables;
/SpringBoot工程部署到云服务器/
通过Maven 编译jar库文件
执行1、2、3步骤之后, 在 SpringBoot工程target文件夹下面生成chat-0.0.1-SNAPSHOT.jar文件
将jar包共享到云服务器
将jar复制到云服务器的磁盘上
云服务器安装JDK
查看jdk版本
java -version
执行java -jar 命令
java -jar c:\Project\Java\chat-0.0.1-SNAPSHOT.jar
云服务器Tomcat配置JKS证书
通过云服务器访问接口
/ Dio 网络请求 /
创建控制器、视图层、Model层CallBack
abstract class CRegisterModel extends IModel { /// userRegister(Map<String, dynamic> p, SuccessCallback s, FailureCallback f); } abstract class CRegisterPresenter extends IPresenter { /// userRegister(Map<String, dynamic> p); } abstract class CRegisterView extends IView { showData(d); }创建Model层
class MRegister extends AbstractModel implements CRegisterModel { @override void dispose() { // TODO: implement dispose HttpManager().cancel(tag!); } @override userRegister(Map<String, dynamic> p, s, f) async{ return HttpManager().post( url: '/user/register', tag: tag!, successCallback: (data) { s(data); }, errorCallback: (data) { f(data); }, params: p); } }创建Presenter层
class PRegister extends AbstractPresenter<CRegisterView, CRegisterModel> implements CRegisterPresenter { @override IModel createModel() { return MRegister(); } @override userRegister(Map<String, dynamic> p) async { view?.startLoading(); return model?.userRegister(p, (data) { view?.showLoadSuccess(); view?.showData(data); model?.dispose(); }, (error) { view?.showLoadFailure(error.code!, error.message!); }); } }HttpManager 初始化
httpManager管理了网络请求的类(get、post、文件上传、取消网络请求)
void main() { HttpManager().init(baseUrl:"https://1.15.0.115:8081/admin"); runApp(const MyApp()); }网络请求异常CERTIFICATE_VERIFY_FAILED
DioError [DioErrorType.other]: HandshakeException: Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED: Hostname mismatch解决方案 : 忽略证书
更多推荐































所有评论(0)