gpt4 book ai didi

C++ 和 cUrl : how to get SSL error codes

转载 作者:行者123 更新时间:2023-11-30 03:04:08 28 4
gpt4 key购买 nike

我正在通过 SSL 建立与安全服务器的连接。一切正常,我的 CACertificate 通过

使用得很好
retCode=curl_easy_setopt(handleCurl, CURLOPT_CAINFO, sSSLCertificate);
retCode=curl_easy_setopt(handleCurl, CURLOPT_SSL_VERIFYPEER, 1);

当我尝试管理 curl 错误时,我被卡住了。基本上我希望能够在 SSL 出现问题时收到通知(错误的 cacert.pem、服务器身份未验证等)。

当 CURLOPT_CAINFO 被赋予一个空的 CAcert 时,没有任何反应,retCode 是正常的。

我尝试在收到请求后获取信息:

res = curl_easy_getinfo(m_pHandleCurl, CURLINFO_SSL_VERIFYRESULT, &lSSLVerifyResult);

但它总是告诉我一切都很好。

我错过了什么?

最佳答案

添加到您的连接设置代码:

// Make sure this is NOT a stack variable! The buffer
// must be available through whole live of the connection
char buffer[CURL_ERROR_SIZE+1] = {};

retCode=curl_easy_setopt(handleCurl, CURLOPT_ERRORBUFFER, buffer);

然后当您的连接结束时,检查缓冲区中的内容 - 您应该也能看到一些关于 SSL 状态的提示。如果没有发生错误,它将为空。

如果您需要实际代码,curl_easy_perform 总是返回数字 CURLcode 以便于处理。

如果您使用多句柄,请改用 curl_multi_info_read。这是示例:

int u = 0;
if (CURLM_OK == curl_multi_perform(multi_, &u))
{
int q = 0;
CURLMsg *msg = NULL;
while ((msg = curl_multi_info_read(multi_, &q)) != NULL)
{
if (msg->msg == CURLMSG_DONE)
{
CURL* easy = msg->easy_handle;
CURLcode code = msg->data.result;
// . . .
}
}
}

关于C++ 和 cUrl : how to get SSL error codes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8912772/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com