1 /*
2  * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpMessage.java $
3  * $Revision: 610823 $
4  * $Date: 2008-01-10 07:53:53 -0800 (Thu, 10 Jan 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;
33 
34 import org.apache.http.params.HttpParams;
35 
36 /**
37  * A generic HTTP message.
38  * Holds what is common between requests and responses.
39  *
40  * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
41  *
42  * @version $Revision: 610823 $
43  *
44  * @since 4.0
45  *
46  * @deprecated Please use {@link java.net.URL#openConnection} instead.
47  *     Please visit <a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">this webpage</a>
48  *     for further details.
49  */
50 @Deprecated
51 public interface HttpMessage {
52 
53     /**
54      * Returns the protocol version this message is compatible with.
55      */
56     ProtocolVersion getProtocolVersion();
57 
58     /**
59      * Checks if a certain header is present in this message. Header values are
60      * ignored.
61      *
62      * @param name the header name to check for.
63      * @return true if at least one header with this name is present.
64      */
65     boolean containsHeader(String name);
66 
67     /**
68      * Returns all the headers with a specified name of this message. Header values
69      * are ignored. Headers are orderd in the sequence they will be sent over a
70      * connection.
71      *
72      * @param name the name of the headers to return.
73      * @return the headers whose name property equals <code>name</code>.
74      */
75     Header[] getHeaders(String name);
76 
77     /**
78      * Returns the first header with a specified name of this message. Header
79      * values are ignored. If there is more than one matching header in the
80      * message the first element of {@link #getHeaders(String)} is returned.
81      * If there is no matching header in the message <code>null</code> is
82      * returned.
83      *
84      * @param name the name of the header to return.
85      * @return the first header whose name property equals <code>name</code>
86      *   or <code>null</code> if no such header could be found.
87      */
88     Header getFirstHeader(String name);
89 
90     /**
91      * Returns the last header with a specified name of this message. Header values
92      * are ignored. If there is more than one matching header in the message the
93      * last element of {@link #getHeaders(String)} is returned. If there is no
94      * matching header in the message <code>null</code> is returned.
95      *
96      * @param name the name of the header to return.
97      * @return the last header whose name property equals <code>name</code>.
98      *   or <code>null</code> if no such header could be found.
99      */
100     Header getLastHeader(String name);
101 
102     /**
103      * Returns all the headers of this message. Headers are orderd in the sequence
104      * they will be sent over a connection.
105      *
106      * @return all the headers of this message
107      */
108     Header[] getAllHeaders();
109 
110     /**
111      * Adds a header to this message. The header will be appended to the end of
112      * the list.
113      *
114      * @param header the header to append.
115      */
116     void addHeader(Header header);
117 
118     /**
119      * Adds a header to this message. The header will be appended to the end of
120      * the list.
121      *
122      * @param name the name of the header.
123      * @param value the value of the header.
124      */
125     void addHeader(String name, String value);
126 
127     /**
128      * Overwrites the first header with the same name. The new header will be appended to
129      * the end of the list, if no header with the given name can be found.
130      *
131      * @param header the header to set.
132      */
133     void setHeader(Header header);
134 
135     /**
136      * Overwrites the first header with the same name. The new header will be appended to
137      * the end of the list, if no header with the given name can be found.
138      *
139      * @param name the name of the header.
140      * @param value the value of the header.
141      */
142     void setHeader(String name, String value);
143 
144     /**
145      * Overwrites all the headers in the message.
146      *
147      * @param headers the array of headers to set.
148      */
149     void setHeaders(Header[] headers);
150 
151     /**
152      * Removes a header from this message.
153      *
154      * @param header the header to remove.
155      */
156     void removeHeader(Header header);
157 
158     /**
159      * Removes all headers with a certain name from this message.
160      *
161      * @param name The name of the headers to remove.
162      */
163     void removeHeaders(String name);
164 
165     /**
166      * Returns an iterator of all the headers.
167      *
168      * @return Iterator that returns Header objects in the sequence they are
169      *         sent over a connection.
170      */
171     HeaderIterator headerIterator();
172 
173     /**
174      * Returns an iterator of the headers with a given name.
175      *
176      * @param name      the name of the headers over which to iterate, or
177      *                  <code>null</code> for all headers
178      *
179      * @return Iterator that returns Header objects with the argument name
180      *         in the sequence they are sent over a connection.
181      */
182     HeaderIterator headerIterator(String name);
183 
184     /**
185      * Returns the parameters effective for this message as set by
186      * {@link #setParams(HttpParams)}.
187      */
188     HttpParams getParams();
189 
190     /**
191      * Provides parameters to be used for the processing of this message.
192      * @param params the parameters
193      */
194     void setParams(HttpParams params);
195 
196 }
197