#include <stdio.h>
#include <curl/curl.h>
size_t write_cb(void *ptr, size_t size, size_t nmemb, void *userdata) {
fwrite(ptr, size, nmemb, (FILE*)userdata);
return size * nmemb;
}
int main() {
CURL *curl = curl_easy_init();
if (!curl) return 1;
FILE *fp = fopen("output.html", "wb");
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
// 生產環境務必驗證證書
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);
// 可選:指定 CA 憑證束
// curl_easy_setopt(curl, CURLOPT_CAINFO, "/etc/ssl/certs/ca-certificates.crt");
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
fclose(fp);
curl_easy_cleanup(curl);
return 0;
}
gcc https_get.c -o https_get -lcurl
CURLOPT_POSTFIELDS、CURLOPT_POSTFIELDSIZE。CURLOPT_HTTPHEADER。curl_multi 系列 API。libcurl 官方教程 libcurl tutorial 涵蓋所有常見場景。