將 curl 轉換為 C

curl2code 使用 libcurl 將 curl 指令轉換為 C 程式碼。轉換過程透過 WebAssembly 在您的瀏覽器中執行,確保完全隱私。若需 Rust,請參考我們的 curl 轉 Rust 轉換器。若需 Go,請參閱 curl 轉 Go。下方是包含正確記憶體管理的實用 C 範例。

如何從瀏覽器複製 curl

  1. 1

    開啟開發者工具 (DevTools)

    按下 F12Ctrl+Shift+I 來開啟您的瀏覽器開發者工具。

  2. 2

    前往網路 (Network) 分頁

    點擊 Network 分頁,並執行觸發 HTTP 請求的操作。

  3. 3

    複製為 cURL

    右鍵點擊該請求 → CopyCopy 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_MSCURLOPT_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。

實用連結

curl 指南

將 curl 轉換為其他語言