คลาส URL ในแพ็กเกจ java.net ใช้สำชี้ resource ในเว็บ เมธอด openStream() เปิดการเชื่อมต่อและคืนค่า InputStream สำหรับอ่านข้อมูล
ขั้นตอน
- สร้างออบเจ็กต์
URLด้วย URL ของเว็บเพจ - เรียก
openStream()ได้InputStream - wrap ด้วย
ScannerหรือBufferedReaderเพื่ออ่านง่ายขึ้น
ตัวอย่างโค้ด
import java.io.IOException;
import java.net.URL;
import java.util.Scanner;
public class ReadingWebPage {
public static void main(String[] args) throws IOException {
URL url = new URL("https://www.example.com/");
Scanner sc = new Scanner(url.openStream());
StringBuffer sb = new StringBuffer();
while (sc.hasNext()) {
sb.append(sc.next());
}
String result = sb.toString();
System.out.println("Raw HTML: " + result);
// ลบ HTML tags
result = result.replaceAll("<[^>]*>", "");
System.out.println("Text only: " + result);
}
}
ผลลัพธ์
Raw HTML: It works!
Text only: It works!
วิธีที่ดีกว่า: ใช้ BufferedReader
import java.io.*;
import java.net.URL;
public class ReadingWebPageBetter {
public static void main(String[] args) throws IOException {
URL url = new URL("https://www.example.com/");
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(url.openStream(), "UTF-8"))) {
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
System.out.println(sb.toString());
}
}
}
ข้อจำกัดของ URL.openStream()
- ไม่รองรับ HTTPS redirect อัตโนมัติในบาง Java version
- ไม่มี timeout setting (ค้างได้ถ้า server ไม่ตอบ)
- ไม่จัดการ cookies, headers, authentication
- ไม่ parse HTML (ต้อง tự strip tags หรือใช้ Jsoup)
แนะนำสำหรับ Production
ใช้ไลบรารี HTTP client ที่ทันสมัย:
- HttpClient (Java 11+) - built-in, รองรับ HTTP/2, async
- OkHttp - ยอดนิยม เร็ว มี connection pooling
- Apache HttpClient - ฟีเจอร์ครบครัน
- Jsoup - ถ้าต้อง parse/extract HTML