You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用httplib的C++程序无法建立SSL连接问题求助

问题描述

我正在开发一款需通过REST API与接口通信的C++软件,使用httplib库。编写的代码如下:

httplib::SSLClient cli("https://www.google.com");
httplib::Result res = cli.Get("/doodles");
if (res && res->status == 200)
{
    std::cout << res->body << "\n";
}
else
{
    auto err = res.error();
    std::cout << httplib::to_string(err) << "\n";
}

运行后报错:Could not establish connection,但在浏览器中输入该URL可正常访问。我尝试在SSLClient构造函数中指定端口443,结果依旧。我的PC已安装OpenSSL,且按如下方式引入httplib:

#define CPPHTTPLIB_OPENSSL_SUPPORT
#include <httplib\httplib.h>

请问我该如何解决这个问题?

解决方案
  • 修正SSLClient构造参数:SSLClient的第一个参数只需传入主机名,带https://会导致解析错误,正确写法是:
    httplib::SSLClient cli("www.google.com", 443);
    
    这是最可能导致连接失败的核心问题。
  • 配置代理设置:浏览器通常自动读取系统代理,但httplib默认不会。如果你的网络需要代理访问外网,手动添加代理配置:
    cli.set_proxy("代理主机名", 代理端口);
    // 若代理需认证
    cli.set_proxy_auth("用户名", "密码");
    
  • 验证OpenSSL链接正确性:确保编译时正确链接OpenSSL的libssl.lib和libcrypto.lib库文件,且OpenSSL版本与httplib兼容。尝试更新到稳定版OpenSSL后重新编译项目。
  • 临时禁用证书验证(仅调试):若因证书验证失败导致连接问题,可临时关闭验证排查:
    cli.enable_server_certificate_verification(false);
    
    注意:生产环境禁止使用此设置,需配置正确的CA证书。
  • 检查防火墙/杀毒软件拦截:本地防火墙或杀毒软件可能拦截了程序的网络请求,尝试临时关闭后测试连接。

内容的提问来源于stack exchange,提问作者Tiberius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:47:18