在 Java 中建立 HTTP 连接,常见方式有以下几种,从原生到常用框架都会讲到。
HttpURLConnection(JDK 自带,无需依赖)这是最基础、最常用的方式。
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://example.com/api");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
int code = conn.getResponseCode();
System.out.println("响应码:" + code);
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
System.out.println("响应内容:" + sb);
conn.disconnect();
}
}
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://example.com/api");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
String body = "{\"name\":\"java\"}";
try (OutputStream os = conn.getOutputStream()) {
os.write(body.getBytes());
}
System.out.println("响应码:" + conn.getResponseCode());
conn.disconnect();
}
}
HttpClient(Java 11+ 推荐 ✅)Java 11 开始官方提供了新的 java.net.http.HttpClient,更现代。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class HttpClientExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/api"))
.GET()
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(
"https://example.com/api", String.class);
✅ 设置超时(防止卡死)
✅ 关闭连接 / 流
✅ HTTPS 一般无需额外配置(JDK 自带信任库)
❌ 不要用 Socket 手写 HTTP(除非学习协议)
如果你告诉我:
我可以给你最合适的完整示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。