您好,登錄后才能下訂單哦!
場景
?????? 跟樂橙云訪問,需要使用HTTPS協議
額外配置,否則執行返回CURLE_UNSUPPORTED_PROTOCOL錯誤
1)libcurl版本升級到7.61.0版本
2)libcurl項目屬性中預編譯器添加USE_WINDOWS_SSPI 以及 USE_SCHANNEL
3)在引用項目的屬性中添加額外的靜態庫Crypt32.lib,Wldap32.lib
? ?
代碼
size_t CLeChengIPC::WriteResponseBody(void *ptr, size_t size, size_t nmemb, void *userData)
{
?std::string* pStrBuffer = (std::string*)userData;
?size_t nLen = size * nmemb;
?pStrBuffer->append((char*)ptr, nLen);
?return nLen;
}
int CLeChengIPC::CommunicateWithServerUsingHTTPS(const std::string &strPostData, const std::string &strUrl, std::string &strResponseData)
{
?CURL *pCurlHandle = curl_easy_init();
?curl_easy_setopt(pCurlHandle, CURLOPT_CUSTOMREQUEST, "POST");
?curl_easy_setopt(pCurlHandle, CURLOPT_URL, strUrl.c_str());
?curl_easy_setopt(pCurlHandle, CURLOPT_WRITEFUNCTION, WriteResponseBody);//設置回調函數
?curl_easy_setopt(pCurlHandle, CURLOPT_HEADER, 1);//保存HTTP頭部信息到strResponseData
?curl_easy_setopt(pCurlHandle, CURLOPT_WRITEDATA, &strResponseData);//設置回調函數的參數,獲取反饋信息
?curl_easy_setopt(pCurlHandle, CURLOPT_TIMEOUT, 15);//接收數據時超時設置,如果10秒內數據未接收完,直接退出
?curl_easy_setopt(pCurlHandle, CURLOPT_MAXREDIRS, 1);//查找次數,防止查找太深
?curl_easy_setopt(pCurlHandle, CURLOPT_CONNECTTIMEOUT, 5);//連接超時,這個數值如果設置太短可能導致數據請求不到就斷開了
?curl_easy_setopt(pCurlHandle, CURLOPT_SSL_VERIFYPEER, false);//設定為不驗證證書和HOST
?curl_easy_setopt(pCurlHandle, CURLOPT_SSL_VERIFYHOST, false);
?curl_easy_setopt(pCurlHandle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
?curl_easy_setopt(pCurlHandle, CURLOPT_POSTFIELDS, strPostData.c_str());
?CURLcode nRet= curl_easy_perform(pCurlHandle);
?curl_easy_cleanup(pCurlHandle);
?return nRet;
}
注意
enum {
? CURL_SSLVERSION_DEFAULT,
? CURL_SSLVERSION_TLSv1, /* TLS 1.x */
? CURL_SSLVERSION_SSLv2,
? CURL_SSLVERSION_SSLv3,
? CURL_SSLVERSION_TLSv1_0,
? CURL_SSLVERSION_TLSv1_1,
? CURL_SSLVERSION_TLSv1_2,
? CURL_SSLVERSION_TLSv1_3,
? CURL_SSLVERSION_LAST /* never use, keep last */
};
? CURL_SSLVERSION_SSLv2和CURL_SSLVERSION_SSLv3兩個宏定義不能使用,否則返回錯誤CURLE_SSL_CONNECT_ERROR,建議使用CURL_SSLVERSION_TLSv1_2宏定義
修訂
2019/7/8 使用CURL_SSLVERSION_SSLv2導致CURLE_SSL_CONNECT_ERROR異常問題記錄
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。