1 /*
2 * ====================================================================
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 * ====================================================================
20 *
21 * This software consists of voluntary contributions made by many
22 * individuals on behalf of the Apache Software Foundation. For more
23 * information on the Apache Software Foundation, please see
24 * <http://www.apache.org/>.
25 *
26 */
27
28 package org.apache.hc.client5.http.examples;
29
30 import java.util.concurrent.Executors;
31 import java.util.concurrent.ScheduledExecutorService;
32 import java.util.concurrent.TimeUnit;
33
34 import org.apache.hc.client5.http.classic.methods.HttpGet;
35 import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
36 import org.apache.hc.client5.http.impl.classic.HttpClients;
37 import org.apache.hc.core5.http.io.entity.EntityUtils;
38 import org.apache.hc.core5.http.message.StatusLine;
39 import org.apache.logging.log4j.core.util.Log4jThreadFactory;
40
41 /**
42 * This example demonstrates how to abort an HTTP method before its normal completion.
43 */
44 public class ClientAbortMethod {
45
46 public static void main(final String[] args) throws Exception {
47 try (final CloseableHttpClient httpclient = HttpClients.createDefault()) {
48 final HttpGet httpget = new HttpGet("http://httpbin.org/get");
49
50 final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1,
51 Log4jThreadFactory.createDaemonThreadFactory("demo"));
52 // Cancel the request after once second
53 executorService.schedule(httpget::cancel, 1, TimeUnit.SECONDS);
54
55 System.out.println("Executing request " + httpget.getMethod() + " " + httpget.getUri());
56 httpclient.execute(httpget, response -> {
57 System.out.println("----------------------------------------");
58 System.out.println(httpget + "->" + new StatusLine(response));
59 EntityUtils.consume(response.getEntity());
60 return null;
61 });
62 }
63 }
64
65 }
66