Конвертировать 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 генерирует C-код libcurl, используя easy-интерфейс.
libcurl easy vs multi interface — что использовать?
Easy interface (curl_easy_*) предназначен для одиночных синхронных передач — он прост и понятен. Multi interface (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 form data в 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 token на C?
Передайте curl -H "Authorization: Bearer YOUR_TOKEN" URL в curl2code, и инструмент сгенерирует код libcurl с заголовком авторизации: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN"). curl2code распознает Bearer tokens как в флагах -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 сопоставляет каждый вариант с подходящим API libcurl.