Spring WebServiceTemplate SOAPAction missing in HTTP Header
===

I am having difficulty in calling a SOAP 1.2 WebService via Spring-ws WebServiceTemplate.  The request being made is missing SOAPAction in Http Header and the server throws an error with "Unable to handle request without a valid action parameter. Please supply a valid soap action."  I was able to figure out SOAP Action was missing by monitoring through wireshark. I am also not behind any proxy.

I have made sure that the SOAP XML I am trying to send is valid by running the request through TCP Mon ( tool like SOAP UI) and was able to get response.

Here is my spring config: 

    <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
                            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                            http://www.springframework.org/schema/util
                            http://www.springframework.org/schema/util/spring-util-3.0.xsd">

	<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
		<property name="soapVersion">
		<util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12" />
		</property>
	</bean>

	<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
	 <constructor-arg ref="messageFactory" />
	<property name="defaultUri" value="https://ecomapi.networksolutions.com/soapservice.asmx" />
	<property name="messageSender">
		<bean class="org.springframework.ws.transport.http.CommonsHttpMessageSender" />		</property>
	</bean>

</beans>

And this is my java code: 

    		    public void simpleSendAndReceive() {
		    	try{
		        StreamSource source = new StreamSource(new StringReader(MESSAGE));
		        StreamResult result = new StreamResult(System.out);
		        SoapActionCallback actionCallBack = new SoapActionCallback("https://ecomapi.networksolutions.com/soapservice.asmx") {
		        	public void doWithMessage(WebServiceMessage msg) {
		        		SoapMessage smsg = (SoapMessage)msg;
		        		smsg.setSoapAction("http://networksolutions.com/ReadOrder");
		        	}
		        };
		        webServiceTemplate.sendSourceAndReceiveToResult(
		        		"https://ecomapi.networksolutions.com/soapservice.asmx",
		        	     source,
		        	     new SoapActionCallback("http://networksolutions.com/ReadOrder"),
         //		        	     actionCallBack,
		        	     result);
		        
		        
		        System.out.println(source.getInputStream().toString());
		        System.out.println(result.getWriter().toString());
		    	
		    	}catch (SoapFaultClientException e) {
		    		System.out.println(e.getFaultCode());
		    		System.out.println(e.getFaultStringOrReason());
		    		System.out.println(e.fillInStackTrace().getLocalizedMessage());
		    	} catch (WebServiceIOException we) {
		    		System.out.println(we.getRootCause());
		    	}
		    }
Thanks,

Rave
