cURL 转 Java
粘贴一条 curl 命令,得到仅靠 JDK 就能编译的 Java 11 HttpClient 代码。
cURL 转 Java 完全在你的浏览器中运行:粘贴的命令连同其中的令牌都在本机转换,不会上传。
打开 cURL 转 C#
关于 cURL 转 Java
Java 到第 11 版终于有了像样的 HTTP 客户端,也就没必要为了复现一条 curl 命令去请出 OkHttp 或 Apache。构建器写起来干净,但有规矩:GET 与 DELETE 不带请求体,POST 与 PUT 带,其余动词——包括 PATCH——都得走通用方法。弄错了要么编译不过,要么请求体被悄悄丢掉。这个转换器读取 curl 的参数并生成遵守这些规矩的代码,只引入需要的 import,并正确编码 -u。
功能特性
- 生成仅靠 JDK 就能编译的 java.net.http 代码
- 为每个动词选择正确的构建器调用,包括 PATCH
- 带请求体的 DELETE 自动改用通用形式
- 请求体使用 BodyPublishers.ofString 并正确转义
- 基本认证使用 java.util.Base64 而不是手写请求头
- 只为请求真正用到的功能添加 import
如何使用 cURL 转 Java
- 粘贴带请求头与请求体的 curl 命令
- 边输入边阅读生成的 Java 代码
- 复制代码,或下载 Main.java
- 用任意 JDK 11 及以上版本直接编译
示例
输入
curl -X PATCH https://api.example.com/users/1 -d '{"role":"admin"}'
输出
.method("PATCH", HttpRequest.BodyPublishers.ofString("{\"role\":\"admin\"}"))
构建器没有 PATCH 的快捷方法,所以要走 method()——手工移植时最容易漏掉的一点。
常见错误与故障排除
- 构建器上没有 .PATCH() 方法。 — 确实如此:快捷方法只有 GET、POST、PUT 与 DELETE,其余都用 method(名称, publisher)。
- 带请求体的 DELETE 丢了数据。 — DELETE() 不接受 publisher,请求体会被丢弃。有数据时,转换器会改用 method("DELETE", …)。
常见问题
- 怎样把 curl 转成 Java?
- 把命令粘贴到上方:方法、URL、请求头与请求体会变成一次 java.net.http 请求,并使用合适的调用方式。
- 生成的代码需要依赖吗?
- 不需要。它用的是自 Java 11 起随 JDK 提供的 java.net.http,类路径为空也能编译。
- Java 里怎样发送 PATCH 请求?
- 用通用调用:.method("PATCH", HttpRequest.BodyPublishers.ofString(body)),因为没有专门的快捷方法。
- 转换时会真的发出请求吗?
- 不会。这个工具只重写文本:不执行任何请求,转换也在你的浏览器中完成。
相关工具
全部 ArrayKit 工具