JavaにおけるHTTPレスポンスの処理手法

HTTPリクエストの送信

JavaアプリケーションにおけるHTTP通信では、標準ライブラリのHttpURLConnectionクラスが広く利用されます。以下はGETリクエストを送信し、レスポンスデータを取得する実装例です。

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.net.URL;
import java.net.HttpURLConnection;

public class HttpRequestHandler {
    public static void executeGetRequest() {
        try {
            URL apiEndpoint = new URL("https://jsonplaceholder.typicode.com/posts/1");
            HttpURLConnection connection = (HttpURLConnection) apiEndpoint.openConnection();
            connection.setRequestMethod("GET");
            
            StringBuilder responseData = new StringBuilder();
            try (BufferedReader reader = new BufferedReader(
                new InputStreamReader(connection.getInputStream()))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    responseData.append(line);
                }
            }
            
            System.out.println("レスポンス内容: " + responseData.toString());
            connection.disconnect();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

JSONレスポンスの解析処理

HTTPレスポンスとしてJSON形式のデータを受信した場合、Gsonライブラリを用いてJavaオブジェクトへの変換が可能です。以下はその実装例です。

import com.google.gson.Gson;

class BlogArticle {
    int authorId;
    int articleId;
    String headline;
    String content;
}

public class JsonResponseParser {
    public static void main(String[] args) {
        try {
            URL apiUrl = new URL("https://jsonplaceholder.typicode.com/posts/1");
            HttpURLConnection httpConnection = (HttpURLConnection) apiUrl.openConnection();
            httpConnection.setRequestMethod("GET");
            
            StringBuilder jsonResponse = new StringBuilder();
            try (BufferedReader responseReader = new BufferedReader(
                new InputStreamReader(httpConnection.getInputStream()))) {
                String responseLine;
                while ((responseLine = responseReader.readLine()) != null) {
                    jsonResponse.append(responseLine);
                }
            }
            
            Gson gsonConverter = new Gson();
            BlogArticle article = gsonConverter.fromJson(jsonResponse.toString(), BlogArticle.class);
            System.out.println("記事タイトル: " + article.headline);
            
            httpConnection.disconnect();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

この実装では、HTTP接続から取得したJSON文字列をGsonライブラリで解析し、定義したBlogArticleクラスのインスタンスへマッピングしています。これにより、タイプセーフな形でレスポンスデータにアクセスできます。

タグ: Java HTTP JSON Gson HttpURLConnection

7月20日 19:03 投稿