1. 概要

このクイックチュートリアルは、ApacheHttpClientを使用してHTTPリクエストをキャンセルする方法を示しています。

これは、実行時間の長いリクエストや、帯域幅と接続を不必要に消費する可能性のある大きなダウンロードファイルに特に役立ちます。

深く掘り下げて、HttpClientでできる他のクールなことを学びたい場合は、メインのHttpClientチュートリアルに進んでください。

2. GETリクエストを中止する

進行中のリクエストを中止するには、クライアントは次を使用するだけです。

request.abort();

これにより、クライアントが接続を解放するためにリクエストの本文全体を消費する必要がなくなります。

@Test
public void whenRequestIsCanceled_thenCorrect() 
  throws ClientProtocolException, IOException {
    HttpClient instance = HttpClients.custom().build();
    HttpGet request = new HttpGet(SAMPLE_URL);
    HttpResponse response = instance.execute(request);

    try {
        System.out.println(response.getStatusLine());
        request.abort();
    } finally {
        response.close();
    }
}

3. 結論

この記事では、HTTPクライアントで進行中のリクエストを中止する方法について説明しました。 長時間実行されるリクエストを停止するもう1つのオプションは、タイムアウトになるようにすることです。

これらすべての例とコードスニペットの実装は、私のGitHubプロジェクトにあります。これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。