温馨提示×

温馨提示×

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

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

HTTP协议在java怎么用

发布时间:2026-09-10 22:21:57 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

在 Java 里使用 HTTP 协议,通常分为几种场景:发送 HTTP 请求(客户端)、接收 HTTP 请求(服务端),以及 底层 Socket 实现。下面按常见用法给你系统讲一下。


一、Java 作为 HTTP 客户端(最常用)

1️⃣ Java 11+ 原生 HttpClient(推荐)

Java 11 开始自带,不需要第三方库。

import java.net.URI;
import java.net.http.*;
import java.time.Duration;

public class HttpDemo {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newBuilder()
                .connectTimeout(Duration.ofSeconds(10))
                .build();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://jsonplaceholder.typicode.com/posts/1"))
                .header("Accept", "application/json")
                .GET()
                .build();

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

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

✅ 支持:

  • GET / POST / PUT / DELETE
  • 同步 & 异步(sendAsync)
  • HTTPS
  • 请求头、超时、Cookie

2️⃣ 使用 HttpURLConnection(老方式,仍可用)

Java 早期标准库方式,代码较繁琐。

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

int code = conn.getResponseCode();
BufferedReader reader =
        new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}

⚠️ 不推荐新项目使用


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

✅ OkHttp

OkHttpClient client = new OkHttpClient();

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

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

✅ Apache HttpClient

适合复杂企业级需求(连接池、重试等)


二、Java 作为 HTTP 服务端

1️⃣ 原生 com.sun.net.httpserver(简单演示)

import com.sun.net.httpserver.*;

public class SimpleServer {
    public static void main(String[] args) throws Exception {
        HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
        server.createContext("/hello", exchange -> {
            String resp = "Hello HTTP";
            exchange.sendResponseHeaders(200, resp.length());
            exchange.getResponseBody().write(resp.getBytes());
            exchange.close();
        });
        server.start();
    }
}

2️⃣ Web 框架(实际开发)

  • Spring Boot(最常用)
@RestController
public class DemoController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello HTTP";
    }
}

三、底层理解:HTTP 就是“文本协议”

HTTP 本质是:

请求行
请求头
空行
请求体

你甚至可以用 Socket 手写:

Socket socket = new Socket("example.com", 80);
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("GET / HTTP/1.1");
out.println("Host: example.com");
out.println();
out.flush();

四、如何选择?

场景 推荐
Java 11+ 新项目 HttpClient
老旧项目 HttpURLConnection
高并发 / 复杂 OkHttp / Apache
Web 服务 Spring Boot

如果你愿意,我可以:

  • 给你 POST + JSON 示例
  • 讲 HTTPS / 证书
  • 写 Spring Boot 完整 HTTP 示例
  • 对比 HTTP/1.1 和 HTTP/2

你现在是 客户端调用 还是 写接口服务?

向AI问一下细节

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

AI
助
手