验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

Java网络请求如何发送

阅读:678 来源:乙速云 作者:代码code

Java网络请求如何发送

在 Java 中发送网络请求有多种方式,下面按常用程度给你总结,并附上可运行示例


一、使用 HttpURLConnection(JDK 自带,最基础)

✅ 适合简单场景
❌ 代码偏繁琐

1️⃣ GET 请求示例

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpGetExample {
    public static void main(String[] args) throws Exception {
        URL url = new URL("https://api.example.com/data");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("GET");
        conn.setConnectTimeout(5000);
        conn.setReadTimeout(5000);

        BufferedReader reader = new BufferedReader(
                new InputStreamReader(conn.getInputStream())
        );

        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }

        reader.close();
        conn.disconnect();
    }
}

2️⃣ POST 请求(JSON)

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpPostExample {
    public static void main(String[] args) throws Exception {
        URL url = new URL("https://api.example.com/post");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String json = "{"name":"Tom","age":18}";

        try (OutputStream os = conn.getOutputStream()) {
            os.write(json.getBytes());
            os.flush();
        }

        System.out.println("ResponseCode: " + conn.getResponseCode());
        conn.disconnect();
    }
}

二、使用 Apache HttpClient(工业级,推荐)

✅ 功能强大
✅ 使用广泛
❌ 需要引入依赖

Maven 依赖

<dependency>
    <groupId>org.apache.httpcomponents.client5groupId>
    <artifactId>httpclient5artifactId>
    <version>5.3version>
dependency>

GET 请求示例

import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;

public class HttpClientGet {
    public static void main(String[] args) throws Exception {
        try (CloseableHttpClient client = HttpClients.createDefault()) {
            HttpGet get = new HttpGet("https://api.example.com/data");
            client.execute(get, response -> {
                System.out.println(response.getCode());
                return null;
            });
        }
    }
}

三、使用 OkHttp(Android / 后端都常用 ✅)

✅ 简洁高效
✅ 支持异步
✅ 非常流行

Maven 依赖

<dependency>
    <groupId>com.squareup.okhttp3groupId>
    <artifactId>okhttpartifactId>
    <version>4.12.0version>
dependency>

GET 请求

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OkHttpGet {
    public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient();

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

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

四、Java 11+ java.net.http.HttpClient(现代推荐 ✅)

✅ JDK 自带
✅ 支持异步
✅ API 设计现代

GET 请求

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Java11HttpClient {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();

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

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

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

五、如何选择?

场景 推荐
不想引入依赖 HttpURLConnection
新项目 / Java 11+ java.net.http.HttpClient
Android ✅ OkHttp
企业级 / 老项目 Apache HttpClient

六、常见注意点

  • 设置超时,防止阻塞
  • 关闭连接 / 流
  • POST 要设置 Content-Type
  • 中文参数需要 URL 编码
  • HTTPS 一般无需额外配置

如果你有具体场景(如:
✅ 上传文件
✅ 调用第三方 API
✅ 带 Token / Header
✅ 异步请求
✅ Spring Boot 项目)

可以直接告诉我,我可以给你针对性示例

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>