Elise, Can you post a dump from your sniffer of the response from .NET? That would help in understanding whether the 2.2 code can handle it.
Scott Nichol ----- Original Message ----- From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, February 22, 2002 11:24 AM Subject: Re: java client for .NET - what do i ignore ? (i must specify that i read the SOAP documentation about xsi:type problem, adapted my code to this problem and had no more results....) the guiden sample didn't help me, and i still have an error when retrieving the String from .NET webservice "Caught SOAPException (SOAP-ENV:Client): No Deserializer found to deserialize a 'http://tempuri.org/:BonjourResult' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'." [EMAIL PROTECTED] 02/22/2002 11:54 AM Please respond to soap-dev To: [EMAIL PROTECTED] cc: Subject: java client for .NET - what do i ignore ? hi, i'm still making connection tests from my java client to my .NET webservice. i looked at the samples some of you gave me(Scott Nichol with samples/interop subdirectory of your Apache SOAP installation) , and other one, the aim was to make a Call() to my .NET webservice. I also used a sniffer to look at the soap envelope i'm sending. First of all, the .NET webservice is expecting SOAP data A (see enclosed code) but my java client is sending SOAP data B with java client code C, and as the webservice should return "hello [theString i sent], the result is simply : "EndpointURL: http://biztalk:8080/PCS_Integration/SynchronizeProfiles.asmx Calling EchoString... EchoByte called with: [B@171afc EchoByte Result: Hello" And then i get this error if i use the code D in my java client : "Caught SOAPException (SOAP-ENV:Client): No Deserializer found to deserialize a 'http://tempuri.org/:BonjourResult' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'." what's wrong ? why can't i still have a correct working connection with a correct understandable data ? Any code i test doesn't fully work... any help would be appreciated, as this is just a test part, and i will have to send a complex data later... I'll never see the end ;) Elise ================================================== code A : what is expecting .NET POST /PCS_Integration/SynchronizeProfiles.asmx HTTP/1.1 Host: biztalk Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/Bonjour" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Bonjour xmlns="http://tempuri.org/"> <strName>string</strName> </Bonjour> </soap:Body> </soap:Envelope> ======================================================= code B : what is sending my java client <?xml version="1.0" encoding="UTF-8" ?> - <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> - <SOAP-ENV:Body> - <ns1:Bonjour xmlns:ns1="http://tempuri.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <strName xsi:type="xsd:string">my string</strName> </ns1:Bonjour> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ================================================================ Code C : the corresponding java code URL url = new URL ("http://biztalk:8080/PCS_Integration/SynchronizeProfiles.asmx"); SOAPMappingRegistry smr = new SOAPMappingRegistry (); StringDeserializer sd = new StringDeserializer (); smr.mapTypes (Constants.NS_URI_SOAP_ENC, new QName ("", "Result"), null, null, sd); // create the transport and set parameters SOAPHTTPConnection st = new SOAPHTTPConnection(); // build the call. Call call = new Call (); call.setSOAPTransport(st); call.setSOAPMappingRegistry (smr); call.setTargetObjectURI ("http://tempuri.org/"); call.setMethodName("Bonjour"); call.setEncodingStyleURI (Constants.NS_URI_SOAP_ENC); Vector params = new Vector(); params.addElement(new Parameter("strName", String.class, "my string", null)); call.setParams(params); Response resp = null; try { resp = call.invoke (url, "http://tempuri.org/Bonjour"); } catch (SOAPException e) { System.err.println("Caught SOAPException (" + e.getFaultCode () + "): " + e.getMessage ()); return; } // check response if (resp != null && !resp.generatedFault()) { Parameter ret = resp.getReturnValue(); Object value = ret.getValue(); System.out.println ("Answer--> " + value); } else { Fault fault = resp.getFault (); System.err.println ("Generated fault: "); System.out.println (" Fault Code = " + fault.getFaultCode()); System.out.println (" Fault String = " + fault.getFaultString()); } ================================================================ code D : The java code that returns me the SOAPException (SOAP-ENV:Client) String sEndpointURL = "http://biztalk:8080/PCS_Integration/SynchronizeProfiles.asmx"; System.out.println("EndpointURL: " + sEndpointURL); SynchronizeProfilesProxy profileProxy = new SynchronizeProfilesProxy(sEndpointURL); String theString = "This is a string"; System.out.println("\nCalling EchoString..."); System.out.println("EchoByte called with: " + request); System.out.println("EchoByte Result: " + profileProxy.EchoByte(request)); // This Method uses the "RPC" style of call, and corresponding Apache 2.2 // classes to do so. public synchronized String EchoByte (byte[] theByte) throws SOAPException { if (_url == null) { throw new SOAPException(org.apache.soap.Constants.FAULT_CODE_CLIENT, "A URL must be specified via setEndPoint(URL)."); } // Map the types. SOAPMappingRegistry smr = new SOAPMappingRegistry(); StringDeserializer ser = new StringDeserializer (); smr.mapTypes (Constants.NS_URI_SOAP_ENC,null, String.class, null, ser); _call.setSOAPMappingRegistry(smr); _call.setMethodName("Bonjour"); _call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); Vector params = new Vector(); Parameter pTheByte = new Parameter("strName", String.class, "my string", null); params.addElement(pTheByte); _call.setParams(params); Response resp = _call.invoke(_url, METHOD_NAMESPACE + "Bonjour"); // Check the response. if (resp.generatedFault()) { Fault fault = resp.getFault(); throw new SOAPException(fault.getFaultCode(), fault.getFaultString()); } else { Parameter retValue = resp.getReturnValue(); String theResult = (String)retValue.getValue(); return theResult; } }