You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by El...@lionbridge.com on 2002/02/22 17:24:53 UTC

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/'." 








Elise_Dupont@lionbridge.com
02/22/2002 11:54 AM
Please respond to soap-dev

 
        To:     soap-dev@xml.apache.org
        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; 
                } 
        }


Re: java client for .NET - what do i ignore ?

Posted by Scott Nichol <sn...@computer.org>.
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: <El...@lionbridge.com>
To: <so...@xml.apache.org>
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/'."








Elise_Dupont@lionbridge.com
02/22/2002 11:54 AM
Please respond to soap-dev


        To:     soap-dev@xml.apache.org
        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;
                }
        }




Re: java client for .NET - what do i ignore ?

Posted by Scott Nichol <sn...@computer.org>.
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: <El...@lionbridge.com>
To: <so...@xml.apache.org>
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/'."








Elise_Dupont@lionbridge.com
02/22/2002 11:54 AM
Please respond to soap-dev


        To:     soap-dev@xml.apache.org
        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;
                }
        }