java如何联网
使用 HttpURLConnection 联网
Java 标准库中的 java.net.HttpURLConnection 是最基础的联网方式。通过创建 URL 对象并打开连接,可以发送 HTTP 请求并读取响应。
URL url = new URL("https://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
} else {
System.out.println("请求失败,响应码: " + responseCode);
}
使用 HttpClient 联网
Java 11 引入了新的 java.net.http.HttpClient API,提供了更现代和灵活的联网方式。支持异步请求和 HTTP/2。
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
使用第三方库 OkHttp
OkHttp 是 Square 公司开发的流行 HTTP 客户端库,提供了简洁的 API 和强大的功能。
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://example.com")
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
处理网络异常
联网操作可能会抛出多种异常,需要妥善处理。常见的异常包括 MalformedURLException、IOException 和 SocketTimeoutException。
try {
URL url = new URL("https://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 其他操作
} catch (MalformedURLException e) {
System.err.println("URL格式错误: " + e.getMessage());
} catch (IOException e) {
System.err.println("网络错误: " + e.getMessage());
}
设置请求头和参数
在发送请求时,可能需要设置请求头或添加查询参数。HttpURLConnection 和 HttpClient 都支持这些操作。
// 使用 HttpURLConnection 设置请求头
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
connection.setRequestProperty("Accept", "application/json");
// 使用 HttpClient 添加查询参数
String query = "param1=value1¶m2=value2";
URI uri = URI.create("https://example.com?" + query);
HttpRequest request = HttpRequest.newBuilder().uri(uri).build();
发送 POST 请求
发送 POST 请求需要设置请求方法为 POST,并可能需要在请求体中发送数据。
// 使用 HttpURLConnection 发送 POST 请求
connection.setRequestMethod("POST");
connection.setDoOutput(true);
try (OutputStream os = connection.getOutputStream()) {
os.write("request body".getBytes());
}
// 使用 HttpClient 发送 POST 请求
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{\"key\":\"value\"}"))
.build();
处理 HTTPS 请求
对于 HTTPS 请求,Java 默认会验证证书。如果需要忽略证书验证(仅限测试环境),可以自定义 SSLContext。

TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
public X509Certificate[] getAcceptedIssuers() { return null; }
}
};
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);






