将 curl 转换为 C#
使用 HttpClient 将 curl 命令转换为 C# 代码。curl2code 通过 WebAssembly 完全在您的浏览器中运行——您的数据保持私密。对于 Java 开发,请尝试我们的 curl 转 Java 转换器。对于 TypeScript,请参阅 curl 转 TypeScript。下方是即插即用的 C# 示例。
如何从浏览器复制 curl
- 1
打开开发者工具
按 F12 或 Ctrl+Shift+I 打开浏览器开发者工具。
- 2
进入 Network 标签页
点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。
- 3
复制为 cURL
右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。
常见问题解答
什么是 C# HttpClient?
HttpClient 是 .NET 中现代的内置 HTTP 客户端。它原生支持 async/await、HTTP/2、自动解压缩和连接池。在整个应用程序中应使用单个 HttpClient 实例(或 IHttpClientFactory)以避免套接字耗尽。它是 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)。对于 Basic 认证,对凭据进行编码并设置请求头。针对单个请求的认证使用 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() —— 它们会导致死锁。关于类似的异步模式,请参阅 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")。将该 handler 传递给 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。