• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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      */
getParams()71     HttpParams getParams()
72         ;
73 
74 
75     /**
76      * Obtains the connection manager used by this client.
77      *
78      * @return  the connection manager
79      */
getConnectionManager()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      */
execute(HttpUriRequest request)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      */
execute(HttpUriRequest request, HttpContext context)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      */
execute(HttpHost target, HttpRequest request)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      */
execute(HttpHost target, HttpRequest request, HttpContext context)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      */
execute( HttpUriRequest request, ResponseHandler<? extends T> responseHandler)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      */
execute( HttpUriRequest request, ResponseHandler<? extends T> responseHandler, HttpContext context)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      */
execute( HttpHost target, HttpRequest request, ResponseHandler<? extends T> responseHandler)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      */
execute( HttpHost target, HttpRequest request, ResponseHandler<? extends T> responseHandler, HttpContext context)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