поэтому у меня есть класс, который делает вызов http с использованием curl в visual studios 2017, который был установлен через vcpkg: Вот, используя вызов функции curl_easy:
string returnResponseAsString(string requestURL) {
CURL *curl_handle;
CURLcode res;
struct MemoryStruct chunk;
chunk.memory = (char *)malloc(1);
chunk.size = 0;
curl_global_init(CURL_GLOBAL_ALL);
/* init the curl session */
curl_handle = curl_easy_init();
/*Turn off SSL Verifcation*/
curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);
/* specify URL to get */
curl_easy_setopt(curl_handle, CURLOPT_URL, requestURL.c_str());
/* send all data to this function */
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
/* we pass our 'chunk' struct to the callback function */
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
/* some servers don't like requests that are made without a user-agent*/
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
/* get it! */
res = curl_easy_perform(curl_handle);
/* check for errors */
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
else {
printf("%lu bytes retrieved\n", (long)chunk.size);
}
string response = chunk.memory;
/* cleanup curl stuff */
curl_easy_cleanup(curl_handle);
free(chunk.memory);
/* we're done with libcurl, so clean it up */
curl_global_cleanup();
return response;
}
Если я не включу эту строку curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);
что отключает проверку SSL, я получаю сообщение об ошибке: curl_easy_perform() failed: Peer certificate cannot be authenticated with given CA certificates
, Я попытался установить сертификаты согласно этим инструкциям: ссылка на сайт, но говорит, чтобы поместить загруженные сертификаты в ту же папку, что и curl.exe. Насколько я могу судить, vcpkg не установил curl.exe. Я искал .crt, и у меня есть изображение найденных сертификатов под vcpkg. Где я должен разместить файл .crt для аутентификации для работы с визуальными студиями?
Задача ещё не решена.
Других решений пока нет …