將 curl 轉換為 C#
使用 HttpClient 將 curl 指令轉換為 C# 程式碼。curl2code 完全透過 WebAssembly 在您的瀏覽器中執行 —— 您的資料將保持私密。若需 Java 開發,請嘗試我們的 curl 轉 Java 轉換器。若需 TypeScript,請參閱 curl 轉 TypeScript。下方提供即插即用的 C# 範例。
如何從瀏覽器複製 curl
- 1
開啟開發者工具 (DevTools)
按下 F12 或 Ctrl+Shift+I 來開啟您的瀏覽器開發者工具。
- 2
前往網路 (Network) 分頁
點擊 Network 分頁,並執行觸發 HTTP 請求的操作。
- 3
複製為 cURL
右鍵點擊該請求 → Copy → Copy as cURL。然後將其貼在上方。
常見問題解答
什麼是 C# HttpClient?
HttpClient 是 .NET 中現代的內建 HTTP 客戶端。它原生支援 async/await、HTTP/2、自動解壓縮和連線池。在整個應用程式中應使用單個 HttpClient 實例(或 IHttpClientFactory)以避免通訊埠(socket)耗盡。它是 curl2code 用於 C# 轉換的預設且唯一的函式庫。
HttpClient vs WebClient vs HttpWebRequest — 應該使用哪一個?
HttpClient 是現代標準 — 務必在新 .NET 專案中使用它。WebClient 和 HttpWebRequest 是舊版技術,不應在新程式碼中使用。HttpClient 提供非同步支援、更好的效能和更簡潔的 API。關於類似的現代客戶端,請參閱 curl 轉 Java 或 curl 轉 Go。
如何在 C# 中處理身份驗證?
設定標頭:client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token)。對於基本驗證,對認證資訊進行編碼並設定標頭。單次請求的驗證使用 request.Headers.Authorization。curl2code 會偵測 -u 和 -H 'Authorization' 並生成正確的 C# 程式碼。
如何在 C# 中發送多部分表單資料?
使用 MultipartFormDataContent:為欄位加入 StringContent,並為檔案加入帶有 StreamContent 的 ContentDisposition。將多部分內容傳遞給 PostAsync(url, content)。Content-Type 邊界會自動設定。curl2code 會將 -F 旗標轉換為此模式。
如何在 C# 中處理 HTTP 錯誤?
呼叫 response.EnsureSuccessStatusCode() 以在非 2xx 狀態時拋出 HttpRequestException。或者手動檢查 response.IsSuccessStatusCode 和 response.StatusCode。將其封裝在 try/catch 中以處理 HttpRequestException、TaskCanceledException(逾時)和 OperationCanceledException。
如何在 HttpClient 中使用 async/await?
HttpClient 的設計即為非同步 — 所有方法都回傳 Task:var response = await client.GetAsync(url)。使用 await response.Content.ReadAsStringAsync() 讀取 body。對於平行請求,使用 Task.WhenAll()。切勿使用 .Result 或 .Wait() — 它們可能會導致死結(deadlocks)。關於類似的非同步模式,請參閱 curl 轉 TypeScript。
如何在 C# HttpClient 中設定逾時?
設定 client.Timeout = TimeSpan.FromSeconds(30) 作為整體逾時。對於單次請求的控制,請使用帶有逾時設定的 CancellationTokenSource:new CancellationTokenSource(TimeSpan.FromSeconds(10))。對於重試,請使用 Polly 函式庫或具備重試策略的 IHttpClientFactory。
如何在 C# 中設定代理伺服器?
建立一個帶有代理設定的 HttpClientHandler:handler.Proxy = new WebProxy("http://proxy:8080")。將該處理常式傳遞給 new HttpClient(handler)。若要對本機位址略過代理,請設定 handler.Proxy.BypassProxyOnLocal = true。curl2code 會將 -x 和 --proxy 旗標轉換為此設定。
如何在 C# 中發送帶有 JSON 主體的 POST 請求?
使用 curl2code 將類似 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 指令轉換為 C#。生成的程式碼使用 new StringContent(json, Encoding.UTF8, 'application/json')。curl2code 會自動偵測帶有 JSON 內容的 -d/--data 旗標,並在 HttpClient 程式碼中設置適當的 Content-Type 標頭。
如何在 C# 中添加 Bearer 權杖授權?
將 curl -H "Authorization: Bearer YOUR_TOKEN" URL 傳遞給 curl2code,它會生成帶有授權標頭的 HttpClient 程式碼:client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue('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 轉換為帶有正確標頭的 HttpClient 程式碼:new StringContent(json, Encoding.UTF8, 'application/json')。對於 -d 數據,curl 預設為 application/x-www-form-urlencoded;對於 -F 表單上傳,它使用 multipart/form-data。curl2code 會將每一項映射到正確的 HttpClient API。