Конвертиране на 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 auth: curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass"). libcurl автоматично кодира креденциалите за Basic auth. 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(), когато приключите с манипулатора (handle). Освобождавайте списъците с хедъри с curl_slist_free_all(). Освобождавайте MIME структурите с curl_mime_free(). За write колъбеци управлявайте собственото си заделяне на буфер. Извикайте 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 токени както от -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.