libcurl does not work with SSL on Android
у меня есть код, который отправляет post-запросы через libcurl:
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
std::string readBuffer;
std::string request_body = "abc=def";
std::string server_url = OBFUSCATE("https://www.anemoclient.ru/api/auth.php");
curl_easy_setopt(curl, CURLOPT_URL, server_url.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request_body.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, nullptr);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
AddChatMessage((char *)curl_easy_strerror(res));
} else {
if (readBuffer.find((std::string)OBFUSCATE("{\"result\":true}")) != std::string::npos) {
action1();
} else {
action2();
}
}
curl_easy_cleanup(curl);
}
curl_global_cleanup();
Когда я добавляю домен с SSL (https://) в CURLOPT_URL, я получаю сообщение об ошибке (res != CURLE_OK) с текстом "Error". Если домен без ssl (http://), то запрос отправляется в обычном режиме. Я скачиваю libcurl.a с https://github.com/gustavogenovese/curl-android-ios/tree/master/prebuilt-with-ssl/android/arm64-v8a и заголовки с официального сайта. В чем может быть причина проблемы?
Ответы (1 шт):
Автор решения: Oleg A
→ Ссылка
Необходимо библиотеке указать сертификат, ну или просто сказать curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);