okay here is the response sent by .NET (as you can see .NET didn't understand my String parameter because it should return "hello mystring" and only returns hello :



<?xml version="1.0" encoding="utf-8" ?>
- <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <soap:Body>
- <BonjourResponse xmlns="http://tempuri.org/">
  <BonjourResult>Bonjour</BonjourResult>
  </BonjourResponse>
  </soap:Body>
  </soap:Envelope>



by the way, when i took the wsdl file to use wsdl2java util, it generated me many classes, but i'm always missing a class it shoudl have generated but didn't
"Method return type org.tempuri.BonjourResponse_Type is missing"




Scott Nichol <[EMAIL PROTECTED]>

02/22/2002 06:33 PM
Please respond to soap-dev

       
        To:        [EMAIL PROTECTED]
        cc:        
        Subject:        Re: java client for .NET - what do i ignore ?



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;
               }
       }





Reply via email to