1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.submit.filters;
14
15
16 import org.apache.commons.httpclient.HttpVersion;
17 import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
18
19 import com.eviware.soapui.impl.support.AbstractHttpRequest;
20 import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport;
21 import com.eviware.soapui.impl.wsdl.submit.transports.http.ExtendedHttpMethod;
22 import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport;
23 import com.eviware.soapui.impl.wsdl.support.CompressionSupport;
24 import com.eviware.soapui.model.iface.SubmitContext;
25 import com.eviware.soapui.model.settings.Settings;
26 import com.eviware.soapui.settings.HttpSettings;
27
28 /***
29 * RequestFilter that applies SoapUI HTTP-settings to the current request
30 *
31 * @author Ole.Matzura
32 */
33
34 public class HttpSettingsRequestFilter extends AbstractRequestFilter
35 {
36 public void filterAbstractHttpRequest(SubmitContext context, AbstractHttpRequest<?> wsdlRequest)
37 {
38 ExtendedHttpMethod httpMethod = (ExtendedHttpMethod) context.getProperty( BaseHttpRequestTransport.HTTP_METHOD );
39
40
41 Settings settings = wsdlRequest.getSettings();
42
43
44 if (settings.getBoolean(HttpSettings.CLOSE_CONNECTIONS))
45 {
46 httpMethod.setRequestHeader("Connection", "close");
47 }
48
49
50 String compressionAlg = settings.getString(HttpSettings.REQUEST_COMPRESSION, "None");
51 if ( !"None".equals(compressionAlg))
52 httpMethod.setRequestHeader("Content-Encoding", compressionAlg);
53
54
55 if (settings.getBoolean(HttpSettings.RESPONSE_COMPRESSION))
56 httpMethod.setRequestHeader("Accept-Encoding", CompressionSupport.getAvailableAlgorithms(","));
57
58
59 if (settings.getBoolean(HttpSettings.DISABLE_CHUNKING) && httpMethod instanceof EntityEnclosingMethod )
60 {
61 ((EntityEnclosingMethod)httpMethod).setContentChunked(false);
62 }
63
64 String httpVersion = settings.getString(HttpSettings.HTTP_VERSION, "1.1");
65 if( httpVersion.equals(HttpSettings.HTTP_VERSION_1_1))
66 {
67 httpMethod.getParams().setVersion(HttpVersion.HTTP_1_1);
68 }
69 else if( httpVersion.equals(HttpSettings.HTTP_VERSION_1_0))
70 {
71 httpMethod.getParams().setVersion(HttpVersion.HTTP_1_0);
72 }
73 else if( httpVersion.equals(HttpSettings.HTTP_VERSION_0_9))
74 {
75 httpMethod.getParams().setVersion(HttpVersion.HTTP_0_9);
76 }
77
78
79 long maxSize = wsdlRequest.getMaxSize();
80 if( maxSize == 0 )
81 maxSize = settings.getLong( HttpSettings.MAX_RESPONSE_SIZE, 0 );
82 if( maxSize > 0 )
83 httpMethod.setMaxSize( maxSize );
84
85
86 HttpClientSupport.applyHttpSettings(httpMethod, settings);
87 }
88 }