Javaで簡易的にHTTPアクセスするならURLクラスとHttpURLConnectionを使えば簡単にできます。ただし、URLクラスのコンストラクタがJava 20で非推奨になったためURIクラスを経由することになります。URLAccessSampleというファイルを作り以下の内容で保存し、コンパイルして実行すると私のブログのRSSフィードが表示されるはずです。URLからopenConnectionまでの流れで例外が発生するのと、そのあとのgetInputStreamでまた例外が発生するので1つのtry文で囲えばいいのですがgetInputStreamのところでtry-with-resouces文を使いたかったのでtryがネストしています。

import java.net.URI;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

import java.io.IOException;
import java.net.MalformedURLException;

public class URLAccessSample{
    public static void main(String... args){
        try{
            var url = URI.create("https://d-kami.hatenablog.com/rss").toURL();
            var connection = url.openConnection();
            
            try(var reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))){
                reader.lines().forEach(System.out::println);
            }catch(IOException e){
                System.out.println("Webページのアクセス中にエラーが発生しました。");
                e.printStackTrace();
            }
        }catch(MalformedURLException e){
            System.out.println("URLの形式が間違っています");
            e.printStackTrace();
        }catch(IOException e){
            System.out.println("コネクションに失敗しました。");
            e.printStackTrace();
        }
    }
}

試しにJava Stream APIで絞り込みや加工をしてみましょう。Java Stream APIに関してはJava Stream APIをいまさら入門 #java8 – Qiitaが参考になります。

import java.net.URI;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

import java.io.IOException;
import java.net.MalformedURLException;

public class URLAccessSample{
    public static void main(String... args){
        try{
            var url = URI.create("https://d-kami.hatenablog.com/rss").toURL();
            var connection = url.openConnection();
            
            try(var reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))){
                reader.lines().filter(s -> s.indexOf("<title>") > -1).map(s -> s.replaceAll("</?title>", "").trim()).forEach(System.out::println);
            }catch(IOException e){
                System.out.println("Webページのアクセス中にエラーが発生しました。");
                e.printStackTrace();
            }
        }catch(MalformedURLException e){
            System.out.println("URLの形式が間違っています");
            e.printStackTrace();
        }catch(IOException e){
            System.out.println("コネクションに失敗しました。");
            e.printStackTrace();
        }
    }
}

このソースコードではまず、filterで<title>を含んでいる行だけを抽出してmapで<title>もしくは</title>をreplaceAllで除外してからtrimで空白を取り除いています。あとはforEachで表示させるだけです。