1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.submit.filters;
14
15 import org.apache.commons.httpclient.URI;
16
17 import com.eviware.soapui.SoapUI;
18 import com.eviware.soapui.impl.wsdl.WsdlInterface;
19 import com.eviware.soapui.impl.wsdl.WsdlRequest;
20 import com.eviware.soapui.impl.wsdl.submit.RequestFilter;
21 import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport;
22 import com.eviware.soapui.impl.wsdl.submit.transports.http.TimeablePostMethod;
23 import com.eviware.soapui.impl.wsdl.support.soap.SoapVersion;
24 import com.eviware.soapui.model.iface.SubmitContext;
25 import com.eviware.soapui.settings.HttpSettings;
26
27 /***
28 * RequestFilter that adds SOAP specific headers
29 *
30 * @author Ole.Matzura
31 */
32
33 public class SoapHeadersRequestFilter implements RequestFilter
34 {
35 public void filterRequest(SubmitContext context, WsdlRequest wsdlRequest)
36 {
37 TimeablePostMethod postMethod = (TimeablePostMethod) context.getProperty( BaseHttpRequestTransport.POST_METHOD );
38
39 WsdlInterface wsdlInterface = (WsdlInterface) wsdlRequest.getOperation().getInterface();
40 String strURL = wsdlInterface.getEndpointURL(wsdlRequest.getEndpoint());
41 strURL = PropertyExpansionRequestFilter.expandProperties( context, strURL );
42 try
43 {
44 postMethod.setURI(new URI(strURL, wsdlRequest.getSettings().getBoolean( HttpSettings.ENCODED_URLS )));
45 }
46 catch ( Exception e)
47 {
48 SoapUI.logError( e );
49 }
50
51
52 String encoding = wsdlRequest.getEncoding();
53
54 SoapVersion soapVersion = wsdlInterface.getSoapVersion();
55 postMethod.setRequestHeader( "Content-Type", soapVersion.getContentTypeHttpHeader( encoding ));
56
57
58 String soapAction = wsdlRequest.getOperation().getAction();
59 if (soapAction == null || soapAction.length() == 0)
60 {
61 soapAction = "\"\"";
62 }
63 else
64 {
65 soapAction = "\"" + soapAction + "\"";
66 }
67
68 postMethod.setRequestHeader("SOAPAction", soapAction);
69
70 }
71 }