Home | History | Annotate | Download | only in client
      1 /*
      2  * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/HttpClient.java $
      3  * $Revision: 676020 $
      4  * $Date: 2008-07-11 09:38:49 -0700 (Fri, 11 Jul 2008) $
      5  *
      6  * ====================================================================
      7  * Licensed to the Apache Software Foundation (ASF) under one
      8  * or more contributor license agreements.  See the NOTICE file
      9  * distributed with this work for additional information
     10  * regarding copyright ownership.  The ASF licenses this file
     11  * to you under the Apache License, Version 2.0 (the
     12  * "License"); you may not use this file except in compliance
     13  * with the License.  You may obtain a copy of the License at
     14  *
     15  *   http://www.apache.org/licenses/LICENSE-2.0
     16  *
     17  * Unless required by applicable law or agreed to in writing,
     18  * software distributed under the License is distributed on an
     19  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     20  * KIND, either express or implied.  See the License for the
     21  * specific language governing permissions and limitations
     22  * under the License.
     23  * ====================================================================
     24  *
     25  * This software consists of voluntary contributions made by many
     26  * individuals on behalf of the Apache Software Foundation.  For more
     27  * information on the Apache Software Foundation, please see
     28  * <http://www.apache.org/>.
     29  *
     30  */
     31 
     32 package org.apache.http.client;
     33 
     34 import java.io.IOException;
     35 
     36 import org.apache.http.HttpHost;
     37 import org.apache.http.HttpRequest;
     38 import org.apache.http.HttpResponse;
     39 import org.apache.http.params.HttpParams;
     40 import org.apache.http.protocol.HttpContext;
     41 import org.apache.http.client.methods.HttpUriRequest;
     42 import org.apache.http.conn.ClientConnectionManager;
     43 
     44 /**
     45  * Interface for an HTTP client.
     46  * HTTP clients encapsulate a smorgasbord of objects required to
     47  * execute HTTP requests while handling cookies, authentication,
     48  * connection management, and other features.
     49  * Thread safety of HTTP clients depends on the implementation
     50  * and configuration of the specific client.
     51  *
     52  * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
     53  *
     54  *
     55  * <!-- empty lines to avoid svn diff problems -->
     56  * @version   $Revision: 676020 $
     57  *
     58  * @since 4.0
     59  */
     60 public interface HttpClient {
     61 
     62 
     63     /**
     64      * Obtains the parameters for this client.
     65      * These parameters will become defaults for all requests being
     66      * executed with this client, and for the parameters of
     67      * dependent objects in this client.
     68      *
     69      * @return  the default parameters
     70      */
     71     HttpParams getParams()
     72         ;
     73 
     74 
     75     /**
     76      * Obtains the connection manager used by this client.
     77      *
     78      * @return  the connection manager
     79      */
     80     ClientConnectionManager getConnectionManager()
     81         ;
     82 
     83     /**
     84      * Executes a request using the default context.
     85      *
     86      * @param request   the request to execute
     87      *
     88      * @return  the response to the request. This is always a final response,
     89      *          never an intermediate response with an 1xx status code.
     90      *          Whether redirects or authentication challenges will be returned
     91      *          or handled automatically depends on the implementation and
     92      *          configuration of this client.
     93      * @throws IOException in case of a problem or the connection was aborted
     94      * @throws ClientProtocolException in case of an http protocol error
     95      */
     96     HttpResponse execute(HttpUriRequest request)
     97         throws IOException, ClientProtocolException
     98         ;
     99 
    100 
    101     /**
    102      * Executes a request using the given context.
    103      * The route to the target will be determined by the HTTP client.
    104      *
    105      * @param request   the request to execute
    106      * @param context   the context to use for the execution, or
    107      *                  <code>null</code> to use the default context
    108      *
    109      * @return  the response to the request. This is always a final response,
    110      *          never an intermediate response with an 1xx status code.
    111      *          Whether redirects or authentication challenges will be returned
    112      *          or handled automatically depends on the implementation and
    113      *          configuration of this client.
    114      * @throws IOException in case of a problem or the connection was aborted
    115      * @throws ClientProtocolException in case of an http protocol error
    116      */
    117     HttpResponse execute(HttpUriRequest request, HttpContext context)
    118         throws IOException, ClientProtocolException
    119         ;
    120 
    121 
    122     /**
    123      * Executes a request to the target using the default context.
    124      *
    125      * @param target    the target host for the request.
    126      *                  Implementations may accept <code>null</code>
    127      *                  if they can still determine a route, for example
    128      *                  to a default target or by inspecting the request.
    129      * @param request   the request to execute
    130      *
    131      * @return  the response to the request. This is always a final response,
    132      *          never an intermediate response with an 1xx status code.
    133      *          Whether redirects or authentication challenges will be returned
    134      *          or handled automatically depends on the implementation and
    135      *          configuration of this client.
    136      * @throws IOException in case of a problem or the connection was aborted
    137      * @throws ClientProtocolException in case of an http protocol error
    138      */
    139     HttpResponse execute(HttpHost target, HttpRequest request)
    140         throws IOException, ClientProtocolException
    141         ;
    142 
    143     /**
    144      * Executes a request to the target using the given context.
    145      *
    146      * @param target    the target host for the request.
    147      *                  Implementations may accept <code>null</code>
    148      *                  if they can still determine a route, for example
    149      *                  to a default target or by inspecting the request.
    150      * @param request   the request to execute
    151      * @param context   the context to use for the execution, or
    152      *                  <code>null</code> to use the default context
    153      *
    154      * @return  the response to the request. This is always a final response,
    155      *          never an intermediate response with an 1xx status code.
    156      *          Whether redirects or authentication challenges will be returned
    157      *          or handled automatically depends on the implementation and
    158      *          configuration of this client.
    159      * @throws IOException in case of a problem or the connection was aborted
    160      * @throws ClientProtocolException in case of an http protocol error
    161      */
    162     HttpResponse execute(HttpHost target, HttpRequest request,
    163                          HttpContext context)
    164         throws IOException, ClientProtocolException
    165         ;
    166 
    167     /**
    168      * Executes a request using the default context and processes the
    169      * response using the given response handler.
    170      *
    171      * @param request   the request to execute
    172      * @param responseHandler the response handler
    173      *
    174      * @return  the response object as generated by the response handler.
    175      * @throws IOException in case of a problem or the connection was aborted
    176      * @throws ClientProtocolException in case of an http protocol error
    177      */
    178     <T> T execute(
    179             HttpUriRequest request,
    180             ResponseHandler<? extends T> responseHandler)
    181         throws IOException, ClientProtocolException
    182         ;
    183 
    184     /**
    185      * Executes a request using the given context and processes the
    186      * response using the given response handler.
    187      *
    188      * @param request   the request to execute
    189      * @param responseHandler the response handler
    190      *
    191      * @return  the response object as generated by the response handler.
    192      * @throws IOException in case of a problem or the connection was aborted
    193      * @throws ClientProtocolException in case of an http protocol error
    194      */
    195     <T> T execute(
    196             HttpUriRequest request,
    197             ResponseHandler<? extends T> responseHandler,
    198             HttpContext context)
    199         throws IOException, ClientProtocolException
    200         ;
    201 
    202     /**
    203      * Executes a request to the target using the default context and
    204      * processes the response using the given response handler.
    205      *
    206      * @param target    the target host for the request.
    207      *                  Implementations may accept <code>null</code>
    208      *                  if they can still determine a route, for example
    209      *                  to a default target or by inspecting the request.
    210      * @param request   the request to execute
    211      * @param responseHandler the response handler
    212      *
    213      * @return  the response object as generated by the response handler.
    214      * @throws IOException in case of a problem or the connection was aborted
    215      * @throws ClientProtocolException in case of an http protocol error
    216      */
    217     <T> T execute(
    218             HttpHost target,
    219             HttpRequest request,
    220             ResponseHandler<? extends T> responseHandler)
    221         throws IOException, ClientProtocolException
    222         ;
    223 
    224     /**
    225      * Executes a request to the target using the given context and
    226      * processes the response using the given response handler.
    227      *
    228      * @param target    the target host for the request.
    229      *                  Implementations may accept <code>null</code>
    230      *                  if they can still determine a route, for example
    231      *                  to a default target or by inspecting the request.
    232      * @param request   the request to execute
    233      * @param responseHandler the response handler
    234      * @param context   the context to use for the execution, or
    235      *                  <code>null</code> to use the default context
    236      *
    237      * @return  the response object as generated by the response handler.
    238      * @throws IOException in case of a problem or the connection was aborted
    239      * @throws ClientProtocolException in case of an http protocol error
    240      */
    241     <T> T execute(
    242             HttpHost target,
    243             HttpRequest request,
    244             ResponseHandler<? extends T> responseHandler,
    245             HttpContext context)
    246         throws IOException, ClientProtocolException
    247         ;
    248 
    249 } // interface HttpClient
    250