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
32package org.apache.http.client;
33
34import java.io.IOException;
35
36import org.apache.http.HttpHost;
37import org.apache.http.HttpRequest;
38import org.apache.http.HttpResponse;
39import org.apache.http.params.HttpParams;
40import org.apache.http.protocol.HttpContext;
41import org.apache.http.client.methods.HttpUriRequest;
42import 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 * @deprecated Please use {@link java.net.URL#openConnection} instead.
61 *     Please visit <a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">this webpage</a>
62 *     for further details.
63 */
64@Deprecated
65public interface HttpClient {
66
67
68    /**
69     * Obtains the parameters for this client.
70     * These parameters will become defaults for all requests being
71     * executed with this client, and for the parameters of
72     * dependent objects in this client.
73     *
74     * @return  the default parameters
75     */
76    HttpParams getParams()
77        ;
78
79
80    /**
81     * Obtains the connection manager used by this client.
82     *
83     * @return  the connection manager
84     */
85    ClientConnectionManager getConnectionManager()
86        ;
87
88    /**
89     * Executes a request using the default context.
90     *
91     * @param request   the request to execute
92     *
93     * @return  the response to the request. This is always a final response,
94     *          never an intermediate response with an 1xx status code.
95     *          Whether redirects or authentication challenges will be returned
96     *          or handled automatically depends on the implementation and
97     *          configuration of this client.
98     * @throws IOException in case of a problem or the connection was aborted
99     * @throws ClientProtocolException in case of an http protocol error
100     */
101    HttpResponse execute(HttpUriRequest request)
102        throws IOException, ClientProtocolException
103        ;
104
105
106    /**
107     * Executes a request using the given context.
108     * The route to the target will be determined by the HTTP client.
109     *
110     * @param request   the request to execute
111     * @param context   the context to use for the execution, or
112     *                  <code>null</code> to use the default context
113     *
114     * @return  the response to the request. This is always a final response,
115     *          never an intermediate response with an 1xx status code.
116     *          Whether redirects or authentication challenges will be returned
117     *          or handled automatically depends on the implementation and
118     *          configuration of this client.
119     * @throws IOException in case of a problem or the connection was aborted
120     * @throws ClientProtocolException in case of an http protocol error
121     */
122    HttpResponse execute(HttpUriRequest request, HttpContext context)
123        throws IOException, ClientProtocolException
124        ;
125
126
127    /**
128     * Executes a request to the target using the default context.
129     *
130     * @param target    the target host for the request.
131     *                  Implementations may accept <code>null</code>
132     *                  if they can still determine a route, for example
133     *                  to a default target or by inspecting the request.
134     * @param request   the request to execute
135     *
136     * @return  the response to the request. This is always a final response,
137     *          never an intermediate response with an 1xx status code.
138     *          Whether redirects or authentication challenges will be returned
139     *          or handled automatically depends on the implementation and
140     *          configuration of this client.
141     * @throws IOException in case of a problem or the connection was aborted
142     * @throws ClientProtocolException in case of an http protocol error
143     */
144    HttpResponse execute(HttpHost target, HttpRequest request)
145        throws IOException, ClientProtocolException
146        ;
147
148    /**
149     * Executes a request to the target using the given context.
150     *
151     * @param target    the target host for the request.
152     *                  Implementations may accept <code>null</code>
153     *                  if they can still determine a route, for example
154     *                  to a default target or by inspecting the request.
155     * @param request   the request to execute
156     * @param context   the context to use for the execution, or
157     *                  <code>null</code> to use the default context
158     *
159     * @return  the response to the request. This is always a final response,
160     *          never an intermediate response with an 1xx status code.
161     *          Whether redirects or authentication challenges will be returned
162     *          or handled automatically depends on the implementation and
163     *          configuration of this client.
164     * @throws IOException in case of a problem or the connection was aborted
165     * @throws ClientProtocolException in case of an http protocol error
166     */
167    HttpResponse execute(HttpHost target, HttpRequest request,
168                         HttpContext context)
169        throws IOException, ClientProtocolException
170        ;
171
172    /**
173     * Executes a request using the default context and processes the
174     * response using the given response handler.
175     *
176     * @param request   the request to execute
177     * @param responseHandler the response handler
178     *
179     * @return  the response object as generated by the response handler.
180     * @throws IOException in case of a problem or the connection was aborted
181     * @throws ClientProtocolException in case of an http protocol error
182     */
183    <T> T execute(
184            HttpUriRequest request,
185            ResponseHandler<? extends T> responseHandler)
186        throws IOException, ClientProtocolException
187        ;
188
189    /**
190     * Executes a request using the given context and processes the
191     * response using the given response handler.
192     *
193     * @param request   the request to execute
194     * @param responseHandler the response handler
195     *
196     * @return  the response object as generated by the response handler.
197     * @throws IOException in case of a problem or the connection was aborted
198     * @throws ClientProtocolException in case of an http protocol error
199     */
200    <T> T execute(
201            HttpUriRequest request,
202            ResponseHandler<? extends T> responseHandler,
203            HttpContext context)
204        throws IOException, ClientProtocolException
205        ;
206
207    /**
208     * Executes a request to the target using the default context and
209     * processes the response using the given response handler.
210     *
211     * @param target    the target host for the request.
212     *                  Implementations may accept <code>null</code>
213     *                  if they can still determine a route, for example
214     *                  to a default target or by inspecting the request.
215     * @param request   the request to execute
216     * @param responseHandler the response handler
217     *
218     * @return  the response object as generated by the response handler.
219     * @throws IOException in case of a problem or the connection was aborted
220     * @throws ClientProtocolException in case of an http protocol error
221     */
222    <T> T execute(
223            HttpHost target,
224            HttpRequest request,
225            ResponseHandler<? extends T> responseHandler)
226        throws IOException, ClientProtocolException
227        ;
228
229    /**
230     * Executes a request to the target using the given context and
231     * processes the response using the given response handler.
232     *
233     * @param target    the target host for the request.
234     *                  Implementations may accept <code>null</code>
235     *                  if they can still determine a route, for example
236     *                  to a default target or by inspecting the request.
237     * @param request   the request to execute
238     * @param responseHandler the response handler
239     * @param context   the context to use for the execution, or
240     *                  <code>null</code> to use the default context
241     *
242     * @return  the response object as generated by the response handler.
243     * @throws IOException in case of a problem or the connection was aborted
244     * @throws ClientProtocolException in case of an http protocol error
245     */
246    <T> T execute(
247            HttpHost target,
248            HttpRequest request,
249            ResponseHandler<? extends T> responseHandler,
250            HttpContext context)
251        throws IOException, ClientProtocolException
252        ;
253
254} // interface HttpClient
255