import groovyx.net.ws.WSClient
import groovyx.net.ws.cxf.SoapVersion
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import javax.xml.namespace.QName;
String WSDL_URL ="file:///C:/project/wsdl/CU_SCHOOL_COURSES_CI%20WSDL.xml";
@Grab(group='org.codehaus.groovy.modules', module='groovyws', version='0.5.0-SNAPSHOT')
def getProxy(wsdl, classLoader) {
new WSClient(wsdl, classLoader)
}
proxy = getProxy( WSDL_URL, this.class.classLoader)
proxy.initialize()
proxy.setPreferredSoapVersion(SoapVersion.SOAP_1_1)
def ci = proxy.create("com.peoplesoft.cu_school_courses_ci.FindCompIntfcCUSCHOOLCOURSESCITypeShape")
def orgId = proxy.create("com.peoplesoft.cu_school_courses_ci.EXTORGIDTypeShape")
def subj = proxy.create("com.peoplesoft.cu_school_courses_ci.SCHOOLSUBJECTTypeShape")
subj.value="ADM";
orgId.value="1132700";
ci.EXTORGID=orgId;
ci.SCHOOLSUBJECT=subj;
proxy.client.getInInterceptors().add(new LoggingInInterceptor())
proxy.client.getOutInterceptors().add(new HeaderInInterceptor(proxy))
proxy.client.getOutInterceptors().add(new LoggingOutInterceptor())
QName q = new QName("http://peoplesoft.com/CU_SCHOOL_COURSES_CI","Find__CompIntfc__CU_SCHOOL_COURSES_CI");
result = proxy.client.invokeWrapped(q,ci)
println result.length
//////////////////////////////////
import java.util.List;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.binding.soap.interceptor.SoapPreProtocolOutInterceptor;
import org.apache.cxf.headers.Header;
import javax.xml.namespace.QName;
import org.apache.cxf.jaxb.JAXBDataBinding;
public class HeaderInInterceptor extends SoapPreProtocolOutInterceptor {
Object security;
public HeaderInInterceptor(Object proxy) {
super();//Phase.POST_LOGICAL);
def security = proxy.create("org.xmlsoap.schemas.ws._2002.xx.secext.SecurityTypeShape");
def usernameToken = proxy.create("org.xmlsoap.schemas.ws._2002.xx.secext.UsernameTokenTypeShape");
def username = proxy.create("org.xmlsoap.schemas.ws._2002.xx.secext.UsernameTypeShape");
def password = proxy.create("org.xmlsoap.schemas.ws._2002.xx.secext.PasswordTypeShape");
password.value="myPassword";
username.value="myUser";
usernameToken.username=username;
usernameToken.password=password;
security.usernameToken=usernameToken;
this.security= security;
}
/*
<scx:Security xmlns:scx="http://schemas.xmlsoap.org/ws/2002/xx/secext">
<scx:UsernameToken>
<scx:Username>USERNAME</scx:Username>
<scx:Password>PASSWORD</scx:Password>
</scx:UsernameToken>
</scx:Security>
*/
public void handleMessage(SoapMessage message) throws Fault {
def list =message.getHeaders();
QName q = new QName("http://schemas.xmlsoap.org/ws/2002/xx/secext","Security","scx");
Header hdr = new Header( q, security, new JAXBDataBinding(security.getClass()));
list.add(hdr)
}
}