Java实现发起HTTP请求的四种方法实现与适用场景

 更新时间:2025年06月09日 11:21:11   作者:超级小忍  
Java中发起HTTP请求有多种方式,包括原生库、第三方库及现代API,以下是常见的几种实现方法,本文介绍了它们的具体实现代码以及性能适用场景,感兴趣的可以了解下

使用HttpURLConnection(原生API)

HttpURLConnection是Java标准库提供的HTTP客户端,适合简单请求。

public class HttpUrlConnectionExample {
    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");
        
        int responseCode = conn.getResponseCode();
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        StringBuilder response = new StringBuilder();
        
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        System.out.println(response.toString());
    }
}

使用Apache HttpClient

Apache HttpClient是功能更丰富的第三方库,适合复杂场景。

public class ApacheHttpClientExample {
    public static void main(String[] args) throws Exception {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet request = new HttpGet("https://api.example.com/data");
        
        try (CloseableHttpResponse response = httpClient.execute(request)) {
            String result = EntityUtils.toString(response.getEntity());
            System.out.println(result);
        }
    }
}

使用OkHttp

OkHttp是Square开发的现代HTTP客户端,性能优异且API简洁。

public class OkHttpExample {
    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+的HttpClient

Java 11引入的新HTTP客户端,支持异步和HTTP/2。

public class Java11HttpClientExample {
    public static void main(String[] args) throws Exception {
        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.body());
    }
}

处理POST请求(以OkHttp为例)

POST请求需要构建请求体,以下是JSON提交示例。

public class OkHttpPostExample {
    public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient();
        MediaType JSON = MediaType.get("application/json; charset=utf-8");
        String jsonBody = "{\"name\":\"John\", \"age\":30}";
        
        Request request = new Request.Builder()
            .url("https://api.example.com/post")
            .post(RequestBody.create(jsonBody, JSON))
            .build();
        
        try (Response response = client.newCall(request).execute()) {
            System.out.println(response.body().string());
        }
    }
}

总结对比

方法特点适用场景
HttpURLConnection原生支持,无需依赖简单GET/POST请求
Apache HttpClient功能全面,支持连接池企业级复杂HTTP交互
OkHttp高性能,简洁API移动端/高性能需求
Java 11 HttpClient现代API,支持异步和HTTP/2

Java 11+项目

可根据项目实际需求选择合适的方法。在现代项目推荐使用OkHttp或Java 11+ HttpClient。

到此这篇关于Java实现发起HTTP请求的四种方法实现与适用场景的文章就介绍到这了,更多相关Java发起HTTP请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot项目开发常用技术整合

    SpringBoot项目开发常用技术整合

    今天给大家分享springboot项目开发常用技术整合,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-08-08
  • Java实现简单的扫雷图

    Java实现简单的扫雷图

    这篇文章主要为大家详细介绍了Java实现简单的扫雷图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • SpringBoot异步Async使用Future与CompletableFuture区别小结

    SpringBoot异步Async使用Future与CompletableFuture区别小结

    本文主要介绍了SpringBoot异步Async使用Future与CompletableFuture区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 基于@Bean修饰的方法参数的注入方式

    基于@Bean修饰的方法参数的注入方式

    这篇文章主要介绍了@Bean修饰的方法参数的注入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 浅谈Spring Boot 整合ActiveMQ的过程

    浅谈Spring Boot 整合ActiveMQ的过程

    本篇文章主要介绍了浅谈Spring Boot 整合ActiveMQ的过程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 将Sublime Text 2配置为Java的IDE的教程

    将Sublime Text 2配置为Java的IDE的教程

    这篇文章主要介绍了将Sublime Text 2配置为Java的IDE的教程,包括能让Sublime这个文本编辑器编译和运行Java程序等,需要的朋友可以参考下
    2015-07-07
  • Java遍历文件夹及子目录代码实例

    Java遍历文件夹及子目录代码实例

    这篇文章主要介绍了Java遍历文件夹及子目录代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • JavaCV获取视频文件时长的方法

    JavaCV获取视频文件时长的方法

    这篇文章主要为大家详细介绍了JavaCV获取视频文件时长的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Spring Boot动态加载Jar包与动态配置实现

    Spring Boot动态加载Jar包与动态配置实现

    随着项目的不断演进和业务需求的增长,很多场景下需要实现系统的动态性和灵活性,本文主要介绍了Spring Boot动态加载Jar包与动态配置实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • SpringCloud Zuul的使用简介

    SpringCloud Zuul的使用简介

    这篇文章主要介绍了SpringCloud Zuul的使用简介,帮助大家更好的理解和学习使用Spring Cloud,感兴趣的朋友可以了解下
    2021-04-04

最新评论