当前位置:首页 > Java

java如何联网

2026-03-20 06:39:53Java

使用 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());
}

处理网络异常

联网操作可能会抛出多种异常,需要妥善处理。常见的异常包括 MalformedURLExceptionIOExceptionSocketTimeoutException

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&param2=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。

java如何联网

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);

标签: java
分享给朋友:

相关文章

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何配置环境变量

java如何配置环境变量

配置Java环境变量的方法 下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK安装包。运行安装程序并按照提示完成安装,记下JDK的安装路径(例如C:\Program File…

如何导入java项目

如何导入java项目

导入Java项目的方法 使用IDE导入(如IntelliJ IDEA或Eclipse) 打开IDE后选择导入现有项目,导航至项目根目录(包含pom.xml或build.gradle的文件位置)。IDE…

java如何入门

java如何入门

学习基础语法 从Java的基础语法开始,包括变量、数据类型、运算符、控制结构(if-else、for循环、while循环)等。可以通过官方文档或入门教程学习。 安装开发环境 下载并安装JDK(J…

java如何调用另一个类的方法

java如何调用另一个类的方法

调用另一个类的方法 在Java中调用另一个类的方法,通常需要创建该类的对象或直接通过类名调用(静态方法)。以下是几种常见的方式: 通过对象实例调用实例方法 创建一个目标类的对象,通过对象调用其方法。…

如何学习好java

如何学习好java

掌握Java基础知识 学习Java的第一步是掌握其基础知识,包括数据类型、变量、运算符、控制流语句(如if-else、for循环、while循环)以及数组。这些是构建更复杂程序的基石。可以通过在线教程…