Конвертувати curl у C

curl2code конвертує команди curl у код C за допомогою libcurl. Конвертація виконується у вашому браузері через WebAssembly для повної приватності. Для Rust перегляньте наш конвертер curl у Rust. Для Go дивіться curl у Go. Нижче наведено практичні приклади на C з правильним керуванням пам'яттю.

Як скопіювати curl з вашого браузера

  1. 1

    Відкрийте DevTools

    Натисніть F12 або Ctrl+Shift+I, щоб відкрити інструменти розробника у вашому браузері.

  2. 2

    Перейдіть на вкладку Network

    Натисніть на вкладку Network і виконайте дію, яка ініціює HTTP-запит.

  3. 3

    Скопіюйте як cURL

    Клацніть правою кнопкою миші на запит → CopyCopy as cURL. Потім вставте його вище.

Часті запитання

Що таке libcurl?

libcurl — це бібліотека C, на якій базується інструмент командного рядка curl. Це найпортативніша та найпоширеніша бібліотека HTTP-клієнта, що підтримує понад 25 протоколів. Використовується в тисячах додатків та вбудованих систем. Додайте її за допомогою менеджера пакетів вашої системи або підключіть статично. curl2code генерує код libcurl на C, використовуючи easy-інтерфейс.

libcurl easy проти multi інтерфейсу — що вибрати?

Easy-інтерфейс (curl_easy_*) призначений для поодиноких синхронних передач — він простий і зрозумілий. Multi-інтерфейс (curl_multi_*) дозволяє виконувати неблокуючі паралельні передачі в одному потоці. Використовуйте easy для скриптів та простих інструментів, multi — для високоефективних додатків. Для мов сімейства C вищого рівня дивіться curl у Rust.

Як обробляти автентифікацію з libcurl?

Для Bearer: встановіть кастомний заголовок за допомогою curl_slist_append(headers, "Authorization: Bearer token"). Для Basic-автентифікації: curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass"). libcurl автоматично кодує облікові дані Basic-автентифікації. curl2code перетворює -u та прапорці заголовків у правильні виклики C API.

Як надіслати дані форми multipart з libcurl?

Використовуйте MIME API (libcurl 7.56+): curl_mime_init() для створення структури mime, curl_mime_addpart() для кожного поля, curl_mime_name() та curl_mime_filedata() для завантаження файлів. Встановіть за допомогою CURLOPT_MIMEPOST. Звільніть пам'ять за допомогою curl_mime_free().

Як обробляти помилки з libcurl?

Кожна функція curl_easy_* повертає CURLcode — перевіряйте його на відповідність CURLE_OK. Використовуйте curl_easy_strerror(code) для отримання зрозумілих повідомлень. Встановіть CURLOPT_ERRORBUFFER для детальних рядків помилок. Отримайте статус HTTP за допомогою curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code).

Як керувати пам'яттю в libcurl?

Завжди викликайте curl_easy_cleanup() після завершення роботи з дескриптором. Звільняйте списки заголовків за допомогою curl_slist_free_all(). Звільняйте структури MIME за допомогою curl_mime_free(). Для зворотних викликів запису (write callbacks) керуйте власним виділенням буфера. Викличте curl_global_cleanup() один раз при виході з програми. Невиконання звільнення ресурсів призводить до витоку пам'яті.

Як встановити таймаути в libcurl?

Встановіть CURLOPT_CONNECTTIMEOUT для таймауту з'єднання та CURLOPT_TIMEOUT для загального часу передачі (обидва в секундах). Для мілісекундної точності використовуйте CURLOPT_CONNECTTIMEOUT_MS та CURLOPT_TIMEOUT_MS. Це ті самі опції, які використовує curl CLI з --connect-timeout та --max-time.

Як налаштувати проксі в libcurl?

Встановіть CURLOPT_PROXY на URL-адресу проксі: curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080"). Для SOCKS5: встановіть CURLOPT_PROXYTYPE на CURLPROXY_SOCKS5. Для автентифікації проксі: CURLOPT_PROXYUSERPWD. libcurl також враховує змінну середовища http_proxy.

Як надіслати POST-запит із тілом JSON у C?

Конвертуйте команду curl POST, таку як curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL, у C за допомогою curl2code. Згенерований код використовує curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string). curl2code автоматично виявляє прапорці -d/--data із вмістом JSON і встановлює відповідний заголовок Content-Type у коді libcurl.

Як додати авторизацію за допомогою Bearer-токена у C?

Передайте curl -H "Authorization: Bearer YOUR_TOKEN" URL у curl2code, і він згенерує код libcurl із заголовком авторизації: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN"). curl2code виявляє Bearer-токени як у прапорцях -H "Authorization: Bearer ...", так і в --oauth2-bearer. Для Basic auth використовуйте -u user:pass.

Як встановити заголовок Content-Type у C?

curl2code конвертує curl -H "Content-Type: application/json" URL у код libcurl із відповідним заголовком: curl_slist_append(headers, "Content-Type: application/json"). Для даних -d curl за замовчуванням використовує application/x-www-form-urlencoded; для завантаження форм -F використовується multipart/form-data. curl2code зіставляє кожен варіант із правильним libcurl API.

Корисні посилання

Посібники з curl

Конвертувати curl в інші мови