• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * $HeadURL: http://svn.apache.org/repos/asf/jakarta/httpcomponents/httpcore/tags/4.0-alpha6/module-main/src/test/java/org/apache/http/mockup/TestHttpClient.java $
3  * $Revision: 576077 $
4  * $Date: 2007-09-16 04:50:22 -0700 (Sun, 16 Sep 2007) $
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 com.android.unit_tests;
33 
34 import java.io.IOException;
35 
36 import org.apache.http.ConnectionReuseStrategy;
37 import org.apache.http.HttpClientConnection;
38 import org.apache.http.HttpException;
39 import org.apache.http.HttpHost;
40 import org.apache.http.HttpRequest;
41 import org.apache.http.HttpResponse;
42 import org.apache.http.HttpVersion;
43 import org.apache.http.impl.DefaultConnectionReuseStrategy;
44 import org.apache.http.params.BasicHttpParams;
45 import org.apache.http.params.CoreConnectionPNames;
46 import org.apache.http.params.DefaultedHttpParams;
47 import org.apache.http.params.HttpParams;
48 import org.apache.http.params.CoreProtocolPNames;
49 import org.apache.http.protocol.BasicHttpProcessor;
50 import org.apache.http.protocol.HttpContext;
51 import org.apache.http.protocol.BasicHttpContext;
52 import org.apache.http.protocol.ExecutionContext;
53 import org.apache.http.protocol.HttpRequestExecutor;
54 import org.apache.http.protocol.RequestConnControl;
55 import org.apache.http.protocol.RequestContent;
56 import org.apache.http.protocol.RequestExpectContinue;
57 import org.apache.http.protocol.RequestTargetHost;
58 import org.apache.http.protocol.RequestUserAgent;
59 
60 public class TestHttpClient {
61 
62     private final HttpParams params;
63     private final BasicHttpProcessor httpproc;
64     private final HttpRequestExecutor httpexecutor;
65     private final ConnectionReuseStrategy connStrategy;
66     private final HttpContext context;
67 
TestHttpClient()68     public TestHttpClient() {
69         super();
70         this.params = new BasicHttpParams();
71         this.params
72             .setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000)
73             .setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false)
74             .setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1)
75             .setParameter(CoreProtocolPNames.USER_AGENT, "TEST-CLIENT/1.1");
76 
77         this.httpproc = new BasicHttpProcessor();
78         // Required protocol interceptors
79         this.httpproc.addInterceptor(new RequestContent());
80         this.httpproc.addInterceptor(new RequestTargetHost());
81         // Recommended protocol interceptors
82         this.httpproc.addInterceptor(new RequestConnControl());
83         this.httpproc.addInterceptor(new RequestUserAgent());
84         this.httpproc.addInterceptor(new RequestExpectContinue());
85 
86         this.httpexecutor = new HttpRequestExecutor();
87         this.connStrategy = new DefaultConnectionReuseStrategy();
88         this.context = new BasicHttpContext(null);
89     }
90 
getParams()91     public HttpParams getParams() {
92         return this.params;
93     }
94 
execute( final HttpRequest request, final HttpHost targetHost, final HttpClientConnection conn)95     public HttpResponse execute(
96             final HttpRequest request,
97             final HttpHost targetHost,
98             final HttpClientConnection conn) throws HttpException, IOException {
99         this.context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
100         this.context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, targetHost);
101         this.context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
102         request.setParams(
103                     new DefaultedHttpParams(request.getParams(), this.params));
104         this.httpexecutor.preProcess(request, this.httpproc, this.context);
105         HttpResponse response = this.httpexecutor.execute(request, conn, this.context);
106         response.setParams(
107                 new DefaultedHttpParams(response.getParams(), this.params));
108         this.httpexecutor.postProcess(response, this.httpproc, this.context);
109         return response;
110     }
111 
keepAlive(final HttpResponse response)112     public boolean keepAlive(final HttpResponse response) {
113         return this.connStrategy.keepAlive(response, this.context);
114     }
115 
116 }
117