Java 作为一门强大的编程语言,提供了丰富的 API 来访问和操作网络资源。使用 Java 能够轻松地创建各种 Web 应用程序,从简单的网站到复杂的分布式系统。
URL 连接
Java 中获取 Web 资源最基本的 是使用 URL 连接。URL 连接代表一个远程资源,可以通过打开连接来读取或写入数据。以下代码使用 URL 连接从给定的网址读取 HTML 内容:
java
import java.net.URL;
import java.net.URLConnection;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class WebReader {
public static void main(String[] args) throws Exception {
// 创建 URL 对象
URL url = new URL("https://www.example.com");
// 打开 URL 连接
URLConnection connection = url.openConnection();
// 获取输入流
InputStream inputStream = connection.getInputStream();
// 使用缓冲读取器读取数据
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
// 打印 HTML 内容
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 关闭输入流
reader.close();
inputStream.close();
}
}
HTTP 客户端
对于需要更高级的 HTTP 交互时,可以使用 HTTP 客户端库。这些库提供了更丰富的功能,例如发送 HTTP 请求并处理 HTTP 响应。以下代码使用 Apache HTTPComponents 库发送一个 GET 请求:
java
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import org.apache.http.HttpEntity;
import org.apache.http.impl.client.HttpClients;
public class WebRequest {
public static void main(String[] args) throws Exception {
// 创建 HTTP 客户端
HttpClient httpClient = HttpClients.createDefault();
// 创建 GET 请求
HttpGet request = new HttpGet("https://www.example.com");
// 执行请求并获取响应
HttpResponse response = httpClient.execute(request);
// 获取响应实体
HttpEntity entity = response.getEntity();
// 打印响应内容
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 关闭响应实体
reader.close();
entity.writeTo(System.out);
entity.consumeContent();
}
}
JSON 解析
获取 Web 资源后,可能需要解析其中包含的 JSON 数据。Java 中有许多 JSON 解析库可以使用,例如 Jackson 和 GSON。以下代码使用 Jackson 库解析一个 JSON 字符串:
java
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonParser {
public static void main(String[] args) throws Exception {
// 创建 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
// 解析 JSON 字符串
JsonNode node = mapper.readTree("{\"name\": \"John Doe\", \"age\": 30}");
// 获取 JSON 数据
String name = node.get("name").asText();
int age = node.get("age").asInt();
// 打印 JSON 数据
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}