将 curl 转换为 Java

使用现代 HttpClient API 将 curl 命令转换为 Java 代码。curl2code 通过 WebAssembly 完全在您的浏览器中运行——没有任何数据离开您的设备。对于 Kotlin 开发,请尝试我们的 curl 转 Kotlin 转换器。对于 C# (.NET),请参阅 curl 转 C#。下方是即插即用的 Java 示例。

如何从浏览器复制 curl

  1. 1

    打开开发者工具

    F12Ctrl+Shift+I 打开浏览器开发者工具。

  2. 2

    进入 Network 标签页

    点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。

  3. 3

    复制为 cURL

    右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。

常见问题解答

什么是 Java HttpClient?

Java 的 HttpClient(在 Java 11 中引入)是一个现代的内置 HTTP 客户端,取代了旧的 HttpURLConnection。它支持 HTTP/2、异步请求、WebSocket 和流式构建器 API。无需外部依赖。curl2code 还支持 OkHttpJsoupHttpURLConnection 作为替代方案。

HttpClient vs OkHttp vs HttpURLConnection —— 使用哪一个?

HttpClient (Java 11+) 是现代标准——新项目请使用它。OkHttp 非常成熟,在 Android 中广泛使用,支持拦截器和连接池。HttpURLConnection 适用于所有 Java 版本,但代码较冗长。对于 Android/Kotlin,请参阅我们的 curl 转 Kotlin 转换器。关于类似的现代方案,请尝试 curl 转 C#

如何在 Java 中处理身份验证?

设置 Authorization 请求头:request.header("Authorization", "Bearer " + token)。对于 Basic 认证,使用 Base64.getEncoder().encodeToString((user + ":" + pass).getBytes()) 进行编码。HttpClient 还支持 Authenticator 用于自动凭据处理。

如何在 Java 中发送多部分表单数据?

Java 11+ HttpClient 需要使用边界字符串手动构建多部分 body。使用 HttpRequest.BodyPublishers.ofString() 配合手动格式化的部分。OkHttp 使用 MultipartBody.Builder 简化了这一过程。curl2code 会为你选择的 Java 库生成适当的多部分代码。

如何在 Java 中处理 HTTP 错误?

使用 HttpClient 时,在每次请求后检查 response.statusCode() —— 它不会在 HTTP 错误时抛出异常。将调用包装在 try/catch 中以处理 IOException(网络)和 InterruptedException(异步)。OkHttp 在失败时抛出 IOException,并提供 response.isSuccessful() 用于状态检查。

如何在 Java 中发起异步 HTTP 请求?

HttpClient 提供返回 sendAsync()CompletableFutureclient.sendAsync(request, BodyHandlers.ofString()).thenApply(HttpResponse::body)。可以使用 thenAccept()thenCompose() 进行链式调用,或使用 CompletableFuture.allOf() 处理并行请求。OkHttp 使用带有 Callback 接口的 enqueue()

如何在 Java HttpClient 中设置超时?

在客户端上设置:HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build()。针对单个请求:request.timeout(Duration.ofSeconds(30))。OkHttp 使用 OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS)

如何在 Java 中配置代理?

使用 HttpClient:HttpClient.newBuilder().proxy(ProxySelector.of(new InetSocketAddress("proxy", 8080))).build()。OkHttp 使用 Proxy 类:new OkHttpClient.Builder().proxy(new Proxy(Proxy.Type.HTTP, address))。Java 也遵循 -Dhttp.proxyHost JVM 标志。curl2code 会自动转换 -x 标志。

如何在 Java 中发送带有 JSON 正文的 POST 请求?

使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL 的 curl POST 命令转换为 Java。生成的代码使用 HttpRequest.newBuilder().POST(BodyPublishers.ofString(jsonString)).build()。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 HttpClient 代码中设置相应的 Content-Type 请求头。

如何在 Java 中添加 Bearer 令牌授权?

curl -H "Authorization: Bearer YOUR_TOKEN" URL 传递给 curl2code,它会生成带有认证请求头的 HttpClient 代码:.header("Authorization", "Bearer YOUR_TOKEN")。curl2code 会从 -H "Authorization: Bearer ..."--oauth2-bearer 标志中检测 Bearer 令牌。对于 Basic auth,请使用 -u user:pass

如何在 Java 中设置 Content-Type 请求头?

curl2code 将 curl -H "Content-Type: application/json" URL 转换为带有正确请求头的 HttpClient 代码:.header("Content-Type", "application/json")。对于 -d 数据,curl 默认使用 application/x-www-form-urlencoded;对于 -F 表单上传,它使用 multipart/form-data。curl2code 会将每一项映射到正确的 HttpClient API。

有用链接

curl 指南

将 curl 转换为其他语言