Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java URL 연결에서 데이터 읽기·쓰기 핵심 단계 완벽 정리

java.net 패키지의 URL 클래스는 월드 와이드 웹(WWW)상의 리소스(파일, 디렉터리 또는 참조)를 가리키는 데 사용되는 URI(Uniform Resource Locator)를 표현합니다.

이 클래스는 다양한 생성자를 제공하며, 그중 하나는 문자열(String) 매개변수를 받아 URL 객체를 생성합니다. 또한 openStream() 메서드를 사용하면 현재 객체가 나타내는 URL에 대한 연결을 열고, 해당 URL에서 데이터를 읽어올 수 있는 InputStream 객체를 반환받을 수 있습니다.

웹 페이지에서 데이터 읽기 단계

URL 클래스를 활용해 웹 페이지의 내용을 읽어오려면 다음 단계를 따릅니다.

  • 원하는 웹 페이지의 URL을 생성자의 매개변수로 전달하여 java.net.URL 클래스의 인스턴스를 생성합니다.
  • openStream() 메서드를 호출하여 InputStream 객체를 얻습니다.
  • 앞서 얻은 InputStream 객체를 매개변수로 전달하여 Scanner 클래스의 인스턴스를 생성합니다.

예제 코드

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 url = new URL("https://www.something.com/");
      // 지정된 페이지의 내용 가져오기
      Scanner sc = new Scanner(url.openStream());
      // 결과를 담기 위한 StringBuffer 인스턴스 생성
      StringBuffer sb = new StringBuffer();
      while(sc.hasNext()) {
         sb.append(sc.next());
      }
      // StringBuffer 객체에서 문자열 추출
      String result = sb.toString();
      System.out.println(result);
      // HTML 태그 제거
      result = result.replaceAll("<[^>]*>", "");
      System.out.println("웹 페이지 내용: "+result);
   }
}

실행 결과

<html><body><h1>Itworks!</h1></body></html>
웹 페이지 내용: Itworks!

URL 연결에 데이터 쓰기(쓰기 작업)

읽기뿐만 아니라 URL 연결에 데이터를 쓰기(write) 위해서는 URLConnection 클래스를 활용할 수 있습니다. 주요 절차는 다음과 같습니다.

  • url.openConnection()을 호출하여 URLConnection 객체를 얻습니다.
  • setDoOutput(true)을 설정하여 출력 스트림 사용을 허용합니다.
  • getOutputStream() 메서드로 OutputStream을 얻은 뒤, 데이터를 기록합니다.
  • 작업이 끝나면 반드시 스트림을 close()하여 리소스 누수를 방지합니다.

이 방식은 주로 서버에 POST 요청 본문을 전송할 때 많이 사용됩니다. 참고로 최신 프로젝트에서는 HttpClient(java.net.http) API를 사용하는 것이 권장되며, try-with-resources 구문을 활용하면 스트림을 더 안전하게 관리할 수 있습니다.