將 curl 轉換為 C
curl2code 使用 libcurl 將 curl 指令轉換為 C 程式碼。轉換過程透過 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 是 curl 命令列工具背後的 C 語言函式庫。它是現存最便攜且部署最廣泛的 HTTP 用戶端函式庫,支援 25 種以上的協定。被數以千計的應用程式和嵌入式系統使用。可透過系統套件管理員添加或進行靜態連結。curl2code 使用 easy 介面生成 libcurl C 程式碼。
libcurl easy vs 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 調用。
如何使用 libcurl 發送 multipart 表單數據?
使用 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 以獲取詳細的錯誤字串。使用 curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code) 獲取 HTTP 狀態碼。
如何管理 libcurl 的記憶體?
完成控制代碼(handle)後務必調用 curl_easy_cleanup()。使用 curl_slist_free_all() 釋放標頭列表。使用 curl_mime_free() 釋放 MIME 結構。對於寫入回調,請自行管理緩衝區分配。在程式結束時調用一次 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 環境變數。
如何在 C 中發送帶有 JSON 主體的 POST 請求?
使用 curl2code 將類似 curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL 的 curl POST 指令轉換為 C。生成的程式碼使用 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string)。curl2code 會自動偵測帶有 JSON 內容的 -d/--data 旗標,並在 libcurl 程式碼中設置適當的 Content-Type 標頭。
如何在 C 中添加 Bearer 權杖授權?
將 curl -H "Authorization: Bearer YOUR_TOKEN" URL 傳遞給 curl2code,它會生成帶有授權標頭的 libcurl 程式碼:struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN")。curl2code 會從 -H "Authorization: Bearer ..." 和 --oauth2-bearer 旗標中偵測 Bearer 權杖。對於 Basic auth,請使用 -u user:pass。
如何在 C 中設置 Content-Type 標頭?
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。