Qt中利用httplib调用https接口

httplib中如果要调用https接口,需要开启OPENSSL支持,经过半天坑爹得摸索,总结下经验。

1,下载 并安装Win64OpenSSL

地址如下,我Qt版本是5.15.2 ,openssl选择的是 64位(Win64OpenSSL-3_3_3.msi)

https://slproweb.com/products/Win32OpenSSL.html

2,拷贝 bin/include/lib文件放到Qt工程中。

4,Qt工程配置

配置头文件,库文件。关键的一句  开启ssl DEFINES += CPPHTTPLIB_OPENSSL_SUPPORT

5,调用https接口

执行时 需要将 libcrypto-3-x64.dll,libssl-3-x64.dll 拷贝到 exe目录下。

 

### httplib 使用 HTTPS 示例 当使用 `httplib` 进行 HTTPS 请求时,该库简化了许多复杂的细节。对于 C++ 版本的 `httplib`,其支持通过简单的 API 调用来发起安全连接。 #### 发起 GET 请求 为了执行一个基本的 HTTPS GET 请求,可以按照如下方式编写代码: ```cpp #include "httplib.h" int main() { // 创建一个新的客户端实例并指定目标主机名和端口,默认情况下443为HTTPS标准端口号 httplib::Client cli("https://example.com"); // 执行GET请求 auto res = cli.Get("/path/to/resource"); if (res && res->status == 200) { std::cout << "Response body: " << res->body << "\n"; } else { std::cerr << "Request failed\n"; } return 0; } ``` 此段代码展示了如何创建一个指向特定 URL 的客户端对象,并发送 GET 请求来获取资源[^3]。 #### 处理 POST 请求 同样地,如果想要提交数据给服务器,则可以通过设置表单字段的方式来进行 POST 操作: ```cpp #include "httplib.h" int main(){ httplib::Client cli("https://example.com"); // 设置要POST的数据体 const char* data = "{\"key\":\"value\"}"; // 添加必要的头部信息以便告知服务端我们正在传递JSON格式的内容 auto headers =(cli.Post("/api/endpoint",data,"application/json")); if(headers){ std::cout<<headers->body<<"\n"; } else{ std::cerr<<"Failed to send request.\n"; } return 0; } ``` 这段程序说明了怎样构建带有 JSON 数据的有效载荷并通过 POST 方法将其上传到远程 Web 服务上。 ### 常见问题解答 1. **SSL/TLS 握手失败** 如果遇到 SSL 握手中断的情况,可能是由于本地环境缺少有效的 CA 证书或者是防火墙阻止了加密通信。确保安装最新的根证书更新包可以帮助解决这类问题。 2. **无法解析域名** 当尝试访问某个网站却收到错误提示说找不到对应的 IP 地址时,这通常意味着 DNS 解析过程出现了障碍。检查网络配置以及是否能够正常上网是解决问题的第一步。 3. **超时异常** 对于长时间未响应的服务调用,应该合理设定时间限制参数以防止应用程序陷入无限等待状态。大多数现代 HTTP 库都允许开发者自定义这些选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土拨鼠不是老鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值