Java如何发送HTTP请求?
- 后端开发
- 2025-07-01
- 9
Java提供了多种方式访问网站,无论是获取网页内容、调用API还是提交数据,以下是详细方法和代码示例:
核心方法及代码实现
HttpURLConnection(Java原生)
适合简单请求,无需第三方库:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class SimpleHttpClient { public static void main(String[] args) { try { // 1. 创建URL对象 URL url = new URL("https://example.com/api/data"); // 2. 打开连接并设置参数 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); // 支持GET/POST conn.setConnectTimeout(5000); // 超时时间(毫秒) // 3. 获取响应 int status = conn.getResponseCode(); if (status == 200) { // 成功响应 BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream()) ); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); System.out.println("响应内容: " + response.toString()); } else { System.out.println("请求失败,状态码: " + status); } // 4. 关闭连接 conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } } }
关键点:

- 设置请求头:conn.setRequestProperty("User-Agent", "Mozilla/5.0")(模拟浏览器)
- POST请求:调用conn.setDoOutput(true),通过输出流发送数据。
Apache HttpClient(推荐)
适合复杂场景(连接池、重试机制等),需添加依赖:
<!-- Maven依赖 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency>
示例代码:
优势:
- 自动管理连接池
- 支持HTTPS、重定向、Cookie等
- 更简洁的API
关键注意事项
-
异常处理
- 捕获IOException处理网络故障
- 检查HTTP状态码(如404、500)
-
HTTPS支持

- Java原生需配置证书:HttpsURLConnection + SSLContext
- HttpClient自动处理(推荐)
-
资源释放
- 关闭连接(conn.disconnect())
- 使用try-with-resources自动释放资源(如HttpClient)
-
性能优化
- 复用HttpClient实例(避免频繁创建)
- 设置连接超时(setConnectTimeout)和读取超时(setReadTimeout)
- 遵守Robots协议
检查目标网站的robots.txt(如禁止爬取路径)。
- 设置合理请求频率
避免高频请求导致IP被封(添加Thread.sleep())。
- 处理敏感数据
使用HTTPS传输,避免明文传递密码。
- Oracle官方HttpURLConnection文档
- Apache HttpClient官方指南
- 示例代码遵循MIT开源协议,可自由使用。
应用场景选择
场景 推荐方法 简单GET/POST请求 HttpURLConnection 高频请求、需要连接池 Apache HttpClient 异步请求 HttpClient + Future 现代REST API调用 Spring RestTemplate 或 WebClient
安全与合规
引用说明:
通过以上方法,您可安全高效地用Java访问网站,根据需求选择合适方案,并始终遵循目标网站的使用条款。
