cURL 转 C#

粘贴一条 curl 命令,得到把请求头放在 .NET 要求位置上的 HttpClient 代码。

cURL 转 C# 完全在你的浏览器中运行:粘贴的命令连同其中的令牌都在本机转换,不会上传。

打开 cURL 转 Java

关于 cURL 转 C#

把 API 文档里的 curl 命令改写成 C# 是件小事,却总在同一个地方翻车:.NET 把请求头分成请求本身与内容两类。Content-Type 属于 HttpContent,而不是 HttpRequestMessage,设错对象不会编译报错,而是在运行时抛异常。这个转换器解析 curl 的各项参数——方法、请求头、请求体,以及会变成基本认证的 -u——并生成一段每个请求头都放对位置的 HttpClient 程序。

功能特性

如何使用 cURL 转 C#

  1. 粘贴带请求头与请求体的 curl 命令
  2. 边输入边阅读生成的 C# 代码
  3. 复制代码,或下载 Program.cs
  4. 查看关于未被转换参数的提示

示例

输入

curl -X POST https://api.example.com/users -H "Content-Type: application/json" -d '{"name":"Ada"}'

输出

request.Content = new StringContent(
    "{\"name\":\"Ada\"}",
    Encoding.UTF8,
    "application/json");

媒体类型交给 StringContent,而不是 request.Headers——正是后者会在运行时抛异常。

常见错误与故障排除

常见问题

怎样把 curl 命令转成 C#?
粘贴到上方即可:方法、URL、请求头与请求体会被解析并生成一段 HttpClient 程序。
为什么不能在 HttpRequestMessage 上设置 Content-Type?
因为 .NET 区分请求头与内容头,而 Content-Type 属于后者,设在 request.Headers 上会抛异常。
C# 里怎样发送基本认证?
把 user:password 做 base64 编码,再以 Basic 方案设置成 DefaultRequestHeaders 上的 AuthenticationHeaderValue。
我的 curl 命令会被发送出去吗?
不会。它在你的浏览器中解析与转换,因此其中的令牌和密钥都留在本机。

相关工具

全部 ArrayKit 工具