a suggestion from a lazy SOAP user ...

this looks like one of those interoperability issues that Apache and
Microsoft are working on. Have a look at Apache SOAP toolkit's accompaniying
documentation and see if it matches any of the listed issues.

- vikram rajan



> ----------
> From:         [EMAIL PROTECTED]
> Reply To:     [EMAIL PROTECTED]
> Sent:         Monday, September 10, 2001 10:49 AM
> To:   [EMAIL PROTECTED]
> Subject:      Deserialization problem
> 
> Hi,
> I am trying to invoke a .Net enabled web service using Java with Apache
> SOAP toolkit.
> 
> I get the following exception:
> [SOAPException: faultCode=SOAP-ENV:Client; msg=No Deserializer found to
> deserialize a 'http://localh
> ost/:AddResult' using encoding style
> 'http://schemas.xmlsoap.org/soap/encoding/'.; targetException=j
> ava.lang.IllegalArgumentException: No Deserializer found to deserialize a
> 'http://localhost/:AddResu
> lt' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'.]
>         at org.apache.soap.rpc.Call.invoke(Call.java:246)
>         at SoapClient1.main(SoapClient1.java:39)
> 
> Here's my trial code:
> /*
>  * SoapClient1.java
>  *
>  * Created on September 9, 2001, 5:15 PM
>  */
> // Required due to use of URL class , required by Call class
> import java.net.*;
> 
> // Required due to use of Vector class
> import java.util.*;
> 
> // Apache SOAP classes used by client
> import org.apache.soap.util.xml.*;
> import org.apache.soap.*;
> import org.apache.soap.rpc.*;
> 
> /**
>  *
>  * @author  srahul
>  * @version
>  */
> public class SoapClient1 {
> 
>     /** Creates new SoapClient1 */
>     public SoapClient1() {
>     }
> 
>     public static void main(String[] args) {
>         Call call = new Call();
>         call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
>         call.setTargetObjectURI("urn:CalcSoap");
>         call.setMethodName ("Add");
>         Vector params=new Vector();
>         params.addElement (new Parameter ("x", String.class, "1", null));
>         params.addElement(new Parameter ("y", String.class, "2", null));
>         call.setParams(params);
>         try {
>             URL url = new URL ("http://161.85.17.164/calc.asmx";);
>             Response resp = call.invoke(url, "http://localhost/Add";);
>             if (resp.generatedFault()) {
>                 Fault fault=resp.getFault();
>                 System.out.println(" Fault code: " +
> fault.getFaultCode());
>                 System.out.println(" Fault string:
> "+fault.getFaultString());
>             }
>             Parameter result=resp.getReturnValue();
>             Object o = result.getValue();
>         } catch (Exception e) {
>             e.printStackTrace();
>         }
>     }
> 
> }
> 
> 
> 
> However i am able to iunvoke the service quite easily using c# and the
> proxy code that
> VStudio .Net generates.
> Here's the proxy file that is generated by Vstudio.net (if it is of any
> use...)
> //------------------------------------------------------------------------
> ------
> // <autogenerated>
> //     This code was generated by a tool.
> //     Runtime Version: 1.0.2914.16
> //
> //     Changes to this file may cause incorrect behavior and will be lost
> if
> //     the code is regenerated.
> // </autogenerated>
> //------------------------------------------------------------------------
> ------
> 
> namespace GeorgeCalc.WebReference1 {
>     using System.Diagnostics;
>     using System.Xml.Serialization;
>     using System;
>     using System.Web.Services.Protocols;
>     using System.Web.Services;
> 
> 
>     [System.Web.Services.WebServiceBindingAttribute(Name="CalcSoap",
> Namespace="http://localhost/";)]
>     public class Calc :
> System.Web.Services.Protocols.SoapHttpClientProtocol {
> 
>         [System.Diagnostics.DebuggerStepThroughAttribute()]
>         public Calc() {
>             this.Url = "http://161.85.17.164/calc.asmx";;
>         }
> 
>         [System.Diagnostics.DebuggerStepThroughAttribute()]
>  
> [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://localho
> st/Add", RequestNamespace="http://localhost/";,
> ResponseNamespace="http://localhost/";,
> Use=System.Web.Services.Description.SoapBindingUse.Literal,
> ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
>         public int Add(int x, int y) {
>             object[] results = this.Invoke("Add", new object[] {
>                         x,
>                         y});
>             return ((int)(results[0]));
>         }
> 
>         [System.Diagnostics.DebuggerStepThroughAttribute()]
>         public System.IAsyncResult BeginAdd(int x, int y,
> System.AsyncCallback callback, object asyncState) {
>             return this.BeginInvoke("Add", new object[] {
>                         x,
>                         y}, callback, asyncState);
>         }
> 
>         [System.Diagnostics.DebuggerStepThroughAttribute()]
>         public int EndAdd(System.IAsyncResult asyncResult) {
>             object[] results = this.EndInvoke(asyncResult);
>             return ((int)(results[0]));
>         }
>     }
> }
> 
> 
> Can someone please let me know, what i am doing wrong here???
> 
> thanks!
> ==Rahul==
> -------------------------------------------
> [EMAIL PROTECTED]
> Ph: 5579000 Extn: 1029
> -------------------------------------------
> 
> 

Reply via email to