在 Java 中使用 6 种方法进行 HTTP 请求

在 Java 开发中,发起 HTTP 请求有多种成熟方案。常见的实现方式主要包括以下六种:

  1. Java SE 自带的 HttpURLConnection
  2. Apache 的 HttpClient 第三方库
  3. Spring 框架的 RestTemplate
  4. JavaFX 的 WebEngine
  5. Square 公司的 OkHttp 第三方库
  6. Square 公司的 Retrofit 第三方库

以上方法均可用于发出 HTTP 请求,具体选择可依据项目依赖与技术栈决定。以下将逐一介绍这六种方法的具体使用示例,更多细节也可参考各库的官方文档。

1. Java SE 的 HttpURLConnection 类

这是 JDK 内置的标准类,无需引入额外依赖。

import java.io.*;
import java.net.*;

public class HttpRequestExample {
  public static void main(String[] args) throws IOException {
    URL url = new URL("https://www.example.com");
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("GET");
    int status = con.getResponseCode();
    BufferedReader in = new BufferedReader(
      new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer content = new StringBuffer();
    while ((inputLine = in.readLine()) != null) {
      content.append(inputLine);
    }
    in.close();
    con.disconnect();
    System.out.println(content);
  }
}

2. Apache 的 HttpClient 第三方库

Apache HttpComponents 提供的经典 HTTP 客户端库。

CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet("http://www.example.com");
CloseableHttpResponse response = client.execute(request);

3. Spring 的 RestTemplate 类

Spring 框架提供的同步 HTTP 客户端,使用简便。

RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject("http://www.example.com", String.class);

4. JavaFX 的 WebEngine 类

JavaFX 提供的引擎类,通常用于加载网页内容,也可用于发起请求。

WebEngine engine = new WebEngine();
engine.load("http://www.example.com");

5. OkHttp 第三方库

高效的 HTTP 客户端库,广泛应用于 Android 及 Java 后端开发。

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
  .url("http://www.example.com")
  .build();
Response response = client.newCall(request).execute();

6. Retrofit 第三方库

基于 OkHttp 的类型安全 HTTP 客户端,常用于定义 API 接口。

Retrofit retrofit = new Retrofit.Builder()
  .baseUrl("http://www.example.com")
  .build();
MyApi api = retrofit.create(MyApi.class);
Call<ResponseBody> call = api.getData();
Response<ResponseBody> response = call.execute();

以上是 Java 中发出 HTTP 请求的常见方法及具体示例。在实际应用中,可根据项目需求、依赖管理及性能要求选择适合的工具。

说明

  1. JavaFX WebEngine:自 JDK 11 起,JavaFX 已从 JDK 标准模块中移除,如需使用需单独引入依赖,且该类主要用于 UI 网页渲染,纯后台 HTTP 请求建议优先选用其他方案。
  2. Spring RestTemplate:在 Spring 5.0 之后已进入维护模式,官方推荐在新项目中使用 WebClient,但 RestTemplate 目前在现有项目中仍被广泛使用。
  3. 代码示例:上述代码片段为核心逻辑展示,实际使用时请根据具体库版本补充必要的 import 语句及异常处理。