温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java怎么处理网络请求

发布时间:2026-10-24 06:24:13 来源:亿速云 阅读:112 作者:小樊 栏目:编程语言

在 Java 中处理网络请求,常见方式取决于你是在写客户端(调用别人接口)还是写服务端(提供接口)。下面分场景讲清楚。


一、Java 作为客户端(发起网络请求)

1️⃣ 使用 HttpURLConnection(JDK 原生,不推荐新项目)

适合简单场景,代码偏底层。

URL url = new URL("https://api.example.com/data");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");

BufferedReader reader = new BufferedReader(
        new InputStreamReader(conn.getInputStream()));
String line;
StringBuilder result = new StringBuilder();
while ((line = reader.readLine()) != null) {
    result.append(line);
}
reader.close();
System.out.println(result);

✅ 优点:无需依赖
❌ 缺点:代码繁琐、功能少


2️⃣ 使用 HttpClient(Java 11+ 推荐 ✅)

现代、异步支持、API 清晰。

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.example.com/data"))
        .build();

HttpResponse<String> response =
        client.send(request, HttpResponse.BodyHandlers.ofString());

System.out.println(response.statusCode());
System.out.println(response.body());

POST 示例:

HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.example.com/login"))
        .header("Content-Type", "application/json")
        .POST(HttpRequest.BodyPublishers.ofString("{\"user\":\"admin\"}"))
        .build();

✅ 推荐新项目使用


3️⃣ 使用第三方库(最常用)

✅ OkHttp(非常流行)

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
        .url("https://api.example.com/data")
        .build();

Response response = client.newCall(request).execute();
System.out.println(response.body().string());

✅ Apache HttpClient

CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet("https://api.example.com/data");
CloseableHttpResponse response = client.execute(get);

✅ 企业项目常见


4️⃣ Spring 项目推荐:RestTemplate / WebClient

RestTemplate(同步)

RestTemplate rest = new RestTemplate();
String result = rest.getForObject(
        "https://api.example.com/data", String.class);

WebClient(响应式,推荐新项目)

WebClient client = WebClient.create();
client.get()
      .uri("https://api.example.com/data")
      .retrieve()
      .bodyToMono(String.class)
      .subscribe(System.out::println);

二、Java 作为服务端(接收网络请求)

1️⃣ Spring Boot(最主流 ✅)

@RestController
public class DemoController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello";
    }
}

✅ 自动处理 HTTP、JSON、路由


2️⃣ 原生 ServerSocket(底层)

ServerSocket server = new ServerSocket(8080);
Socket socket = server.accept();

❌ 不推荐业务开发


三、常见问题 & 建议

✅ 超时设置(很重要)

client = HttpClient.newBuilder()
        .connectTimeout(Duration.ofSeconds(5))
        .build();

✅ 异常处理

  • 网络超时
  • 状态码非 200
  • JSON 解析失败

✅ HTTPS

  • Java 11+ HttpClient 默认支持
  • 自签证书需自定义 TrustManager(谨慎)

四、怎么选?

场景 推荐
Java 11+ 新项目 HttpClient
Spring 项目 RestTemplate / WebClient
高并发 / 异步 WebClient / OkHttp
简单脚本 HttpURLConnection

如果你愿意,可以告诉我:

  • 是客户端还是服务端
  • 用 Spring 还是纯 Java
  • 请求类型(GET / POST / 文件上传)

我可以直接给你可运行示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手