java如何连网
连接网络的基本方法
Java中连接网络通常使用java.net包中的类,如URL、URLConnection、HttpURLConnection或第三方库如Apache HttpClient和OkHttp。
使用HttpURLConnection发送HTTP请求:
URL url = new URL("http://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
System.out.println(response.toString());
使用第三方库Apache HttpClient
Apache HttpClient提供更高级的功能和更简洁的API:
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet request = new HttpGet("http://example.com");
CloseableHttpResponse response = httpClient.execute(request);
String result = EntityUtils.toString(response.getEntity());
System.out.println(result);
response.close();
httpClient.close();
使用OkHttp进行网络请求
OkHttp是一个高效的HTTP客户端,适用于Android和Java应用:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://example.com")
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
处理HTTPS连接
如果需要连接HTTPS,需配置SSL上下文:
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[]{new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; }
}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);
异步网络请求
使用CompletableFuture实现异步请求:

CompletableFuture.supplyAsync(() -> {
try {
URL url = new URL("http://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
return reader.lines().collect(Collectors.joining());
} catch (IOException e) {
throw new RuntimeException(e);
}
}).thenAccept(System.out::println);






