Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Httpcomponents Wiki" 
for change notification.

The following page has been changed by OlegKalnichevski:
http://wiki.apache.org/HttpComponents/HttpClientTutorial

------------------------------------------------------------------------------
  
  == HTTP protocol interceptors ==
  
-    HTTP protocol customization using custom protocol interceptors
+     HTTP protocol interceptor is a routine that implements a specific aspect 
of the HTTP protocol. Usually protocol interceptors are expected to act upon 
one specific header or a group of related headers of the incoming message or 
populate the outgoing message with one specific header or a group of related 
headers. Protocol interceptors can also manipulate content entities enclosed 
with messages, transparent content compression / decompression being a good 
example. Usually this is accomplished by using the 'Decorator' pattern where a 
wrapper entity class is used to decorate the original entity. Several protocol 
interceptors can be combined to form one logical unit. 
+     
+     Protocol interceptors can collaborate by sharing information - such as a 
processing state - through the HTTP execution context. Protocol interceptors 
can use HTTP context to store a processing state for one request or several 
consecutive requests. 
+ 
+     Usually the order in which interceptors are executed should not matter as 
long as they do not depend on a particular state of the execution context. If 
protocol interceptors have interdependencies and therefore must be executed in 
a particular order, they should be added to the protocol processor in the same 
sequence as their expected execution order.
+ 
+     Protocol interceptors must be implemented as thread-safe. Similarly to 
servlets, protocol interceptors should not use instance variables unless access 
to those variables is synchronized. 
+ 
+     This is an example of how local context can be used to persist a 
processing state between consecutive requests:
+     
+ {{{
+ DefaultHttpClient httpclient = new DefaultHttpClient();
+ 
+ HttpContext localContext = new BasicHttpContext();
+ 
+ AtomicInteger count = new AtomicInteger(1);
+ 
+ localContext.setAttribute("count", count);
+ 
+ httpclient.addRequestInterceptor(new HttpRequestInterceptor() {
+ 
+     public void process(
+             final HttpRequest request, 
+             final HttpContext context) throws HttpException, IOException {
+         AtomicInteger count = (AtomicInteger) context.getAttribute("count");
+         request.addHeader("Count", Integer.toString(count.getAndIncrement()));
+     }
+     
+ });
+ 
+ HttpGet httpget = new HttpGet("http://localhost/";);
+ for (int i = 0; i < 10; i++) {
+     HttpResponse response = httpclient.execute(httpget, localContext);
+     
+     HttpEntity entity = response.getEntity();
+     if (entity != null) {
+         entity.consumeContent();
+     }
+ }
+ }}}
  
  == HTTP parameters ==
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to