• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 public interface HttpMessage {
47 
48     /**
49      * Returns the protocol version this message is compatible with.
50      */
getProtocolVersion()51     ProtocolVersion getProtocolVersion();
52 
53     /**
54      * Checks if a certain header is present in this message. Header values are
55      * ignored.
56      *
57      * @param name the header name to check for.
58      * @return true if at least one header with this name is present.
59      */
containsHeader(String name)60     boolean containsHeader(String name);
61 
62     /**
63      * Returns all the headers with a specified name of this message. Header values
64      * are ignored. Headers are orderd in the sequence they will be sent over a
65      * connection.
66      *
67      * @param name the name of the headers to return.
68      * @return the headers whose name property equals <code>name</code>.
69      */
getHeaders(String name)70     Header[] getHeaders(String name);
71 
72     /**
73      * Returns the first header with a specified name of this message. Header
74      * values are ignored. If there is more than one matching header in the
75      * message the first element of {@link #getHeaders(String)} is returned.
76      * If there is no matching header in the message <code>null</code> is
77      * returned.
78      *
79      * @param name the name of the header to return.
80      * @return the first header whose name property equals <code>name</code>
81      *   or <code>null</code> if no such header could be found.
82      */
getFirstHeader(String name)83     Header getFirstHeader(String name);
84 
85     /**
86      * Returns the last header with a specified name of this message. Header values
87      * are ignored. If there is more than one matching header in the message the
88      * last element of {@link #getHeaders(String)} is returned. If there is no
89      * matching header in the message <code>null</code> is returned.
90      *
91      * @param name the name of the header to return.
92      * @return the last header whose name property equals <code>name</code>.
93      *   or <code>null</code> if no such header could be found.
94      */
getLastHeader(String name)95     Header getLastHeader(String name);
96 
97     /**
98      * Returns all the headers of this message. Headers are orderd in the sequence
99      * they will be sent over a connection.
100      *
101      * @return all the headers of this message
102      */
getAllHeaders()103     Header[] getAllHeaders();
104 
105     /**
106      * Adds a header to this message. The header will be appended to the end of
107      * the list.
108      *
109      * @param header the header to append.
110      */
addHeader(Header header)111     void addHeader(Header header);
112 
113     /**
114      * Adds a header to this message. The header will be appended to the end of
115      * the list.
116      *
117      * @param name the name of the header.
118      * @param value the value of the header.
119      */
addHeader(String name, String value)120     void addHeader(String name, String value);
121 
122     /**
123      * Overwrites the first header with the same name. The new header will be appended to
124      * the end of the list, if no header with the given name can be found.
125      *
126      * @param header the header to set.
127      */
setHeader(Header header)128     void setHeader(Header header);
129 
130     /**
131      * Overwrites the first header with the same name. The new header will be appended to
132      * the end of the list, if no header with the given name can be found.
133      *
134      * @param name the name of the header.
135      * @param value the value of the header.
136      */
setHeader(String name, String value)137     void setHeader(String name, String value);
138 
139     /**
140      * Overwrites all the headers in the message.
141      *
142      * @param headers the array of headers to set.
143      */
setHeaders(Header[] headers)144     void setHeaders(Header[] headers);
145 
146     /**
147      * Removes a header from this message.
148      *
149      * @param header the header to remove.
150      */
removeHeader(Header header)151     void removeHeader(Header header);
152 
153     /**
154      * Removes all headers with a certain name from this message.
155      *
156      * @param name The name of the headers to remove.
157      */
removeHeaders(String name)158     void removeHeaders(String name);
159 
160     /**
161      * Returns an iterator of all the headers.
162      *
163      * @return Iterator that returns Header objects in the sequence they are
164      *         sent over a connection.
165      */
headerIterator()166     HeaderIterator headerIterator();
167 
168     /**
169      * Returns an iterator of the headers with a given name.
170      *
171      * @param name      the name of the headers over which to iterate, or
172      *                  <code>null</code> for all headers
173      *
174      * @return Iterator that returns Header objects with the argument name
175      *         in the sequence they are sent over a connection.
176      */
headerIterator(String name)177     HeaderIterator headerIterator(String name);
178 
179     /**
180      * Returns the parameters effective for this message as set by
181      * {@link #setParams(HttpParams)}.
182      */
getParams()183     HttpParams getParams();
184 
185     /**
186      * Provides parameters to be used for the processing of this message.
187      * @param params the parameters
188      */
setParams(HttpParams params)189     void setParams(HttpParams params);
190 
191 }
192