package.html revision 069490a5ca2fd1988d29daf45d892f47ad665115
1<html>
2<head>
3<!--
4/*
5 * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/package.html $
6 * $Revision: 496070 $
7 * $Date: 2007-01-14 04:18:34 -0800 (Sun, 14 Jan 2007) $
8 *
9 * ====================================================================
10 * Licensed to the Apache Software Foundation (ASF) under one
11 * or more contributor license agreements.  See the NOTICE file
12 * distributed with this work for additional information
13 * regarding copyright ownership.  The ASF licenses this file
14 * to you under the Apache License, Version 2.0 (the
15 * "License"); you may not use this file except in compliance
16 * with the License.  You may obtain a copy of the License at
17 *
18 *   http://www.apache.org/licenses/LICENSE-2.0
19 *
20 * Unless required by applicable law or agreed to in writing,
21 * software distributed under the License is distributed on an
22 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23 * KIND, either express or implied.  See the License for the
24 * specific language governing permissions and limitations
25 * under the License.
26 * ====================================================================
27 *
28 * This software consists of voluntary contributions made by many
29 * individuals on behalf of the Apache Software Foundation.  For more
30 * information on the Apache Software Foundation, please see
31 * <http://www.apache.org/>.
32 *
33 */
34-->
35</head>
36<body>
37HTTP protocol execution framework.
38
39Apart from simply sending and receiving messages, there are a lot
40of things to consider when communicating with HTTP. Many details
41such as transport encodings or connection management are handled
42by setting up or interpreting
43{@link org.apache.http.Header headers} in the messages.
44In order to relieve applications from the responsibility of
45implementing these nitty-gritty details of the protocol,
46HTTP components provides an execution framework that sets up
47some of the headers before sending a message, and interprets
48headers when a message has been received.
49<br/>
50An HTTP {@link org.apache.http.protocol.HttpProcessor processor}
51typically keeps lists of so-called interceptors that will be executed
52before a message is sent and after it has been received.
53An application should initialize a processor, set up the lists
54with the required and desired processors, and then communicate
55through that processor. There are four kinds of interceptors,
56depending on whether they act on
57{@link org.apache.http.HttpRequestInterceptor requests} or
58{@link org.apache.http.HttpResponseInterceptor responses},
59on the client or server side:
60
61<table border="1" cellpadding="5">
62<tr><th></th>
63    <th>Client</th>
64    <th>Server</th>
65</tr>
66<tr><th>Request</th>
67    <td>prepares headers before a request is sent</td>
68    <td>interprets headers when a request is received</td>
69</tr>
70<tr><th>Response</th>
71    <td>interprets headers when a response is received</td>
72    <td>prepares headers before a response is sent</td>
73</tr>
74</table>
75
76<p>
77{@link org.apache.http.protocol.HttpRequestExecutor HttpRequestExecutor}
78is a processor for the client side,
79{@link org.apache.http.protocol.HttpService HttpService}
80for the server side.
81On the client side, a {@link org.apache.http.protocol.HttpContext context}
82is used to tie together a request, the response to it, and other data
83that might be associated with the request execution. It is passed to
84the request executor whenever needed.
85</p>
86
87<p>
88<font size="+1">
89<i>
90Information about required and recommended interceptors for the
91client side will be provided elsewhere. For the time being, please
92refer to the comments in the example applications or ask on
93one of the mailing lists.
94</i>
95</font>
96</p>
97
98<p>
99<b>Note:</b>
100If you want to develop a server-side application, we recommend that
101you implement your application as a servlet running in a servlet engine
102like <a href="http://tomcat.apache.org/">Tomcat</a> or full-blown
103JSEE container like <a href="http://geronimo.apache.org/">Geronimo</a>.
104If you prefer to implement a server-side application based on our
105{@link org.apache.http.protocol.HttpService HttpService}, we'll
106assume that you know what you're doing and that you don't need
107help in figuring out which interceptors need to be configured.
108</p>
109
110
111</body>
112</html>
113