注册Post请求
我们实现RegPost函数
1 | void LogicSystem::RegPost(std::string url, HttpHandler handler) { |
在const.h中添加ErrorCodes定义并且包含JsonCpp相关的头文件
1 |
|
然后在LogicSystem的构造函数里添加获取验证码的处理逻辑,
1 | RegPost("/get_varifycode", [](std::shared_ptr<HttpConnection> connection) { |
然后我们在LogicSystem中添加Post请求的处理
1 | bool LogicSystem::HandlePost(std::string path, std::shared_ptr<HttpConnection> con) { |
在HttpConnection的HandleReq中添加post请求处理
1 | void HttpConnection::HandleReq() { |
然后我们启动服务器,然后下载postman,大家可以去官网下载,如果速度慢可以去我的网盘下载
https://pan.baidu.com/s/1DBIf7Y6G3v0XYfW5LyDKMg?pwd=kjxz
提取码:kjxz
打开postman,将请求修改为post
绿色的为post请求的json参数,红色的为服务器返回的json数据包。
我们看服务器打印的日志
客户端增加post逻辑
我们之前在客户端实现了httpmgr的post请求,在点击获取验证码的槽函数里添加发送http的post请求即可
1 | void RegisterDialog::on_get_code_clicked() |
当服务器不启动,客户端输入邮箱,点击获取验证码,客户端会收到网络连接失败的提示
启动服务器后,再次获取验证码,就显示正确提示了,而且客户端输出了服务器回传的邮箱地址email is "secondtonone1@163.com"
,界面也刷新为正确显示
客户端配置管理
我们发现客户端代码中很多参数都是写死的,最好通过配置文件管理,我们在代码所在目录中新建一个config.ini文件, 内部添加配置
1 | [GateServer] |
接着右键项目添加现有文件config.ini即可加入项目中。
因为我们的程序最终会输出的bin目录,所以在pro中添加拷贝脚本将配置也拷贝到bin目录
1 | win32:CONFIG(release, debug | release) |
global.h中添加声明
1 | extern QString gate_url_prefix; |
在cpp中添加定义
1 | QString gate_url_prefix = ""; |
在main函数中添加解析配置的逻辑
1 | // 获取当前应用程序的路径 |
将RegisterDialog发送post请求修改为
1 | HttpMgr::GetInstance()->PostHttpReq(QUrl(gate_url_prefix+"/get_varifycode"), |
再次测试仍旧可以收到服务器回馈的http包。
这么做的好处就是客户端增加了配置,而且以后修改参数也方便。