Конвертувати curl у C
curl2code конвертує команди curl у код C за допомогою libcurl. Конвертація виконується у вашому браузері через WebAssembly для повної приватності. Для Rust перегляньте наш конвертер curl у Rust. Для Go дивіться curl у Go. Нижче наведено практичні приклади на C з правильним керуванням пам'яттю.
Як скопіювати curl з вашого браузера
- 1
Відкрийте DevTools
Натисніть F12 або Ctrl+Shift+I, щоб відкрити інструменти розробника у вашому браузері.
- 2
Перейдіть на вкладку Network
Натисніть на вкладку Network і виконайте дію, яка ініціює HTTP-запит.
- 3
Скопіюйте як cURL
Клацніть правою кнопкою миші на запит → Copy → Copy 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
Знайдіть будь-який код завершення curl — причини, виправлення та поради з налагодження.
Завантаження файлів за допомогою curl
Зберігайте файли з -o, -O, слідкуйте за перенаправленнями, відновлюйте завантаження та інше.
SSL, TLS та проксі
Налаштування сертифікатів, версій TLS, HTTP/SOCKS-проксі та власного DNS.