Re: URGENT:!!! Please help insert XML data in kSOAP envelope
Sherine Khoury <[email protected]> Fri, 31 Oct 2003 13:54:02 +0100
| Newsgroups | gmane.comp.java.enhydra.ksoap |
|---|---|
| Message-ID | <[email protected]> |
KHOURY Shérine (Dr&T) wrote: > [email protected] wrote: > >> Hi >> i am using following code for inserting >> <agency> >> <name>..</name> >> <tel>..</tel> >> <email>..</email> >> <contacted>...</contacted> >> <contactPerson>...</contactPerson> >> </agency> >> >> on the receiving side (struts/servlet) i can successfully build a >> SOAPEnvelope.. >> >> >> SoapObject method = *new* >> SoapObject("http://www.tgmm.com/agenciesdemo", "agency"); >> >> method.addProperty("name", name); >> >> method.addProperty("tel", phone); >> >> method.addProperty("email", email); >> >> method.addProperty("contacted", contact); >> >> method.addProperty("contactperson",person); >> >> SoapSerializationEnvelope envelope = >> >> *new* SoapSerializationEnvelope(SoapSerializationEnvelope.VER10); >> >> envelope.bodyOut = method; >> >> System.err.println("connecting to new endpoint..."); >> >> HttpTransport ht = *new* >> HttpTransport("http://localhost:8080/struts/insert.do");//http://services.xmethods.net/soap"); >> >> ht.debug = *true*; >> >> *try* { >> >> ht.call("http://localhost:8080/struts/insert.do", envelope); >> >> } >> >> *catch* (Exception e) { >> >> e.printStackTrace(); >> >> } >> >> >> >> hope this helps... >> >> >> >> regards >> >> marco >> >> >> >> -----Original Message----- >> *From:* [email protected] >> [mailto:[email protected]]*On Behalf Of *ext KHOURY Shérine >> (Dr&T) >> *Sent:* 29 October, 2003 16:16 >> *To:* [email protected] >> *Subject:* Ksoap: URGENT:!!! Please help insert XML data in kSOAP >> envelope >> >> Hi guys, >> I have to send an XML result looking like this >> <Person> >> <FirstName>Smith</FirstName> >> <LastName>John</LastName> >> </Person> >> inside a SOAP message using kSOAP. >> I'm proceding as follows: >> ///result being a String containing the XML result >> response = new SoapObject( soapReq.getNamespace( ) , name + >> "Response" ); >> if ( result != null ) >> response.addProperty( "return", result ); >> } >> SoapEnvelope ResEnv = new SoapEnvelope(); >> // Puts the Soap response in the envelope's body >> ResEnv.setBody(response);/ >> >> The problem is that upon receipt of this Soap message, the >> contents of the SOAP envelope looks something like this: >> /<SOAP-ENV:Envelope >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> xmlns:xsd="http://www.w3.org/2001/XMLSchema" >> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" >> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> >> <SOAP-ENV:Body >> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> >> <findResponse >> xmlns="urn:sncf:profilekeeper:profilekeeper.ProfileKeeper" >> id="o0" SOAP-ENC:root="1"> >> <return xmlns="" xsi:type="xsd:string"><Person> >> <FirstName>Smith</FirstName> >> <LastName>John</LastName> >> <Person> >> </return> >> </findResponse> >> </SOAP-ENV:Body>/ >> >> Can anyone tell me how to avoid letting SoapObject assume all >> properties to be Strings? >> I'm in urgent need of help!! So I will appreciate any suggestions >> > Hello Marco, > Thanks for your help. But my problem is that in my case, the XML part > that I need to add in the SOAP message does not have a standard > structure. It's the answer returned by some query, so it's really > dependant of that query. > Therefore what you suggested does not exactly fit to what I want to > do. Do you have any more ideas? > Thanks anyway!! > Shérine > Hi you guys , Found the cure!! Here's the trick: Put the XML info inside à org.kxml.kdom.Node. Then, use simply SoapEnvelope.setBody(node); setBody checks to see if the argument inherits from XmlIO, as is the case for Node, and does the right thing. Thanks for your help.