-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Do this.
instead of serviceClient.addHeader(header) put serviceClient.addHeader(basicCredentials). The addHeader method can not accept an instance of Header class (arghh !! I better check this inside the code) If this doesn't solve your problem, I need to re-create the problem and see. So please create a JIRA issue and upload your code there. Chinthaka Daniel Herbison wrote: > Thank you so far for your help! > > The code is getting to the call (invokeBlocking) but is failing with this > exception: > > Exception in thread "main" org.apache.axiom.soap.SOAPProcessingException: > Expecting an implementation of SOAP Envelope as the parent. But received > some other implementation > > Could the header be causing this? > > When I print the header I see (this looks ok): > <soapenv:Header xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> > <BasicCredentials xmlns="beta"> > <serviceId>string1</serviceId> > <serviceKey>string2</serviceKey> > </BasicCredentials> > </soapenv:Header> > > current code: > RPCServiceClient serviceClient = new RPCServiceClient(); > Options options = serviceClient.getOptions(); > options.setSoapVersionURI(org.apache.axis2.namespace.Constants.URI_SOAP12_ENV); > options.setTo(targetEPR); > > // start header build > SOAPFactory factory = (SOAPFactory) OMAbstractFactory.getSOAP12Factory(); > OMNamespace omNs = factory.createOMNamespace("beta", ""); > SOAPHeader header = factory.createSOAPHeader(); > OMElement basicCredentials = factory.createOMElement("BasicCredentials", > omNs); > OMElement serviceId = factory.createOMElement("serviceId", omNs); > OMText serviceIdText = factory.createOMText(serviceId, agentID); > serviceId.addChild(serviceIdText); > OMElement serviceKey = factory.createOMElement("serviceKey", omNs); > OMText serviceKeyText = factory.createOMText(serviceKey, agentToken); > serviceKey.addChild(serviceKeyText); > basicCredentials.addChild(serviceId); > basicCredentials.addChild(serviceKey); > header.addChild(basicCredentials); > // end header build > > serviceClient.addHeader(header); > QName opSetClaim = new QName("beta", "GetClaim" ); > Object[] opSetParams = new Object[] { agentID, agentToken, requestor }; > Class[] returnTypes = new Class[] { Object.class }; > Exception occuring on next line > Object[] response = serviceClient.invokeBlocking(opSetClaim, opSetParams, > returnTypes); > > > Eran Chinthaka wrote: > Ok, the first advice is *never* use impl classes inside Axiom. Always > use the factories. The reason is we have multiple implementations of them. > > To correct your problem, the easiest way is to create an OMElement > rather than a SOAPHeaderBlock and call serviceClient.addHeader(OMElement). > > The second option is to use the created SOAP12Factory to create > SOAPHeaderBlock. > use soapFactory.createSOAPHeaderBlock(...) > > HTH. > Chinthaka > > Daniel Herbison wrote: >>>> I'm trying to add the SOAP header, described in comment in code below, to >>>> a >>>> RPC call to a service. First of all I really do not know if the code to >>>> create the header is correct, i think it is in the ball park(?) But I >>>> get a >>>> run time error of: >>>> >>>> Exception in thread "main" java.lang.ClassCastException: >>>> org.apache.axiom.om.impl.OMNamespaceImpl >>>> at >>>> org.apache.axiom.soap.impl.dom.SOAPHeaderBlockImpl.<init>(SOAPHeaderBlockImpl.java:54) >>>> at >>>> org.apache.axiom.soap.impl.dom.soap12.SOAP12HeaderBlockImpl.<init>(SOAP12HeaderBlockImpl.java:45) >>>> at rpcAxSys.main(Unknown Source) >>>> >>>> the line causing the run time error is marked below, why is this doing >>>> this? >>>> Also, is the header creation correct? >>>> >>>> code------------------ >>>> RPCServiceClient serviceClient = new RPCServiceClient(); >>>> Options options = serviceClient.getOptions(); >>>> EndpointReference targetEPR = new >>>> EndpointReference("https://xyz/Authorize/Service.asmx"); >>>> options.setTo(targetEPR); >>>> >>>> /* header build >>>> <soap:Header> >>>> <BasicCredentials xmlns="beta"> >>>> <serviceId>string1</serviceId> >>>> <serviceKey>string2</serviceKey> >>>> </BasicCredentials> >>>> </soap:Header> >>>> */ >>>> OMFactory fac = OMAbstractFactory.getOMFactory(); >>>> OMNamespace omNs = fac.createOMNamespace("beta", "xmlns"); >>>> >>>> SOAPFactory soapFactory = new SOAP12Factory(); >>>> SOAPHeaderBlock soapHeaderBlock = new >>>> SOAP12HeaderBlockImpl("Security",omNs,soapFactory); >>>> soapHeaderBlock.setMustUnderstand(true); >>>> >>>> OMElement basicCredentials = fac.createOMElement("BasicCredentials", >>>> omNs); >>>> >>>> OMElement serviceId = fac.createOMElement("serviceId", omNs); >>>> OMText serviceIdText = fac.createOMText(serviceId, agentID); >>>> serviceId.addChild(serviceIdText); >>>> >>>> OMElement serviceKey = fac.createOMElement("serviceKey", omNs); >>>> OMText serviceKeyText = fac.createOMText(serviceKey, agentToken); >>>> serviceKey.addChild(serviceKeyText); >>>> >>>> basicCredentials.addChild(serviceId); >>>> basicCredentials.addChild(serviceKey); >>>> >>>> soapHeaderBlock.addChild(basicCredentials); >>>> >>>> serviceClient.addHeader(soapHeaderBlock); >>>> // end header build >>>> >>>> QName opSetClaim = new QName("beta", "GetClaim" ); >>>> >>>> Object[] opSetParams = new Object[] { agentID, agentToken, requestor }; >>>> Class[] returnTypes = new Class[] { Object.class }; >>>> >>>> Object[] response = serviceClient.invokeBlocking(opSetClaim, opSetParams, >>>> returnTypes); >>>> >> - --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGRU7bjON2uBzUhh8RAsnpAJ4gKItRxT9WzcBZnzmq0NmUhBqJEgCgj11k +8NtQclVduzU9J76Mi8I0Hk= =acAh -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
