i read all SOAP documentation... in fact my question is more about interoperability...
I generated XML with the tool Castor (xml2java2xml data binding). when i hard code a SOAP message with the enveloppe and just add my XML in the body it works fine, i even sent complex types like datasets.
the problem is that when i generate the SOAP (with the code below) the SOAP message isn't like what is expecting .NET, (i read many documentation about xsd and co it's not the problem), i followed each recomandations found on SOAP doc, mailing list archives and so on, but the problem is not solved : i get this error :
i tryed to change the encoding, but it's even worse, or in some cases there is no error but the .NET webservice doesn't understand my string and can't return it... my java to java webservices have always worked fine... but i was wondering if there is maybe a solution to generate a SOAP message that could be understandable by .NET
I guess that the solution could be in the marshaller, i read many do about it, but i'm not able to make it works !
ps : i will also post this question in a java forum, but if somewhee here also develop in java it could help me ?
======================
here is the code that works : hard code
======================
here is the SOAP message generation that doesn't work but should ;-)
Best regards,
Elise, XML learning girl X-)
I generated XML with the tool Castor (xml2java2xml data binding). when i hard code a SOAP message with the enveloppe and just add my XML in the body it works fine, i even sent complex types like datasets.
the problem is that when i generate the SOAP (with the code below) the SOAP message isn't like what is expecting .NET, (i read many documentation about xsd and co it's not the problem), i followed each recomandations found on SOAP doc, mailing list archives and so on, but the problem is not solved : i get this error :
Code:
Caught SOAPException (SOAP-ENV:Client): No Deserializer found to deserialize a '[URL unfurl="true"]http://tempuri.org/:BonjourResult'[/URL] using encoding style '[URL unfurl="true"]http://schemas.xmlsoap.org/soap/encoding/'.[/URL]
i tryed to change the encoding, but it's even worse, or in some cases there is no error but the .NET webservice doesn't understand my string and can't return it... my java to java webservices have always worked fine... but i was wondering if there is maybe a solution to generate a SOAP message that could be understandable by .NET
I guess that the solution could be in the marshaller, i read many do about it, but i'm not able to make it works !
ps : i will also post this question in a java forum, but if somewhee here also develop in java it could help me ?
======================
here is the code that works : hard code
Code:
StringBuffer payload =
new StringBuffer("<?xml version=\'1.0\' encoding=\'UTF-8\'?>");
payload.append(
"<soap:Envelope xmlns:xsi=\"[URL unfurl="true"]http://www.w3.org/2001/XMLSchema-instance\"[/URL] xmlns:xsd=\"[URL unfurl="true"]http://www.w3.org/2001/XMLSchema\"[/URL] xmlns:soap=\"[URL unfurl="true"]http://schemas.xmlsoap.org/soap/envelope/\">");[/URL]
payload.append("<soap:Body>");
payload.append("<WS_UpdateProfileAgency xmlns=\"[URL unfurl="true"]http://tempuri.org/\">");[/URL]
payload.append("<dsComp>");
.......
URL endpoint = new URL(server + "/PCS_Integration/SynchronizeProfiles.asmx");
URLConnection con = endpoint.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setAllowUserInteraction(false);
con.setRequestProperty("Content-Length", Integer.toString(request.length));
con.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
con.setRequestProperty(
"SOAPAction","\"[URL unfurl="true"]http://tempuri.org/WS_UpdateProfileAgency\"");[/URL]
OutputStream out = con.getOutputStream();
out.write(request);
.......
======================
here is the SOAP message generation that doesn't work but should ;-)
Code:
SOAPMappingRegistry smr = new SOAPMappingRegistry ();
StringDeserializer sd = new StringDeserializer ();
smr.mapTypes(Constants.NS_URI_SOAP_ENC ,new QName("[URL unfurl="true"]http://tempuri.org/","BonjourResult"),null,null,sd);[/URL]
SOAPHTTPConnection st = new SOAPHTTPConnection();
Call call = new Call ();
call.setSOAPTransport(st);
call.setSOAPMappingRegistry (smr);
call.setTargetObjectURI ("[URL unfurl="true"]http://tempuri.org/");[/URL]
call.setMethodName("Bonjour");
call.setEncodingStyleURI (Constants.NS_URI_SOAP_ENC);
Vector params = new Vector();
Parameter pTheByte = new Parameter("strName", String.class, "elise", null);
params.addElement(pTheByte);
call.setParams(params)
Response resp = null;
try {
resp = call.invoke (url, "[URL unfurl="true"]http://tempuri.org/Bonjour");[/URL]
.......
Elise, XML learning girl X-)