The service is returning the value in an XML element (named 'return') that has no xsi:type attribute. Therefore, your client must provide a type mapping for this element, such as by adding code like:
SOAPMappingRegistry smr = new SOAPMappingRegistry(); smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("", "return"), null, null, new FloatDeserializer()); call.setSOAPMappingRegistry(smr); Scott Nichol ----- Original Message ----- From: "Siddique Farhan-W13881" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, July 02, 2002 1:31 PM Subject: No Deserializer found > Hi Scott: > I am getting this error message, when I try to run a sample web > service. Can you please me if I missing anything. Thanks > > [SOAPException: faultCode=SOAP-ENV:Client; msg=No Deserializer found to > deserialize a ':return' using encoding style > 'http://schemas.xmlsoap.org/soap/encoding/'.; > targetException=java.lang.IllegalArgumentException: No Deserializer found to > deserialize a ':return' using encoding style > 'http://schemas.xmlsoap.org/soap/encoding/'.] at > org.apache.soap.rpc.Call.invoke(Call.java:244) at > TempClient.getTemp(TempClient.java:28) at > TempClient.main(TempClient.java:48) > > Code is as follows > > import java.io.*; > import java.net.*; > import java.util.*; > import org.apache.soap.util.xml.*; > import org.apache.soap.*; > import org.apache.soap.rpc.*; > > public class TempClient{ > > public static float getTemp (URL url, String zipcode) throws Exception { > > Call call = new Call (); > > // Service uses standard SOAP encoding > String encodingStyleURI = Constants.NS_URI_SOAP_ENC; > call.setEncodingStyleURI(encodingStyleURI); > > // Set service locator parameters > call.setTargetObjectURI ("urn:xmethods-Temperature"); > call.setMethodName ("getTemp"); > > // Create input parameter vector > Vector params = new Vector (); > params.addElement (new Parameter("zipcode", String.class, zipcode, > null)); > call.setParams (params); > > // Invoke the service .... > Response resp = call.invoke (url,""); > > // ... and evaluate the response > if (resp.generatedFault ()) { > throw new Exception(); > } else { > // Call was successful. Extract response parameter and return > result > Parameter result = resp.getReturnValue (); > Float rate=(Float) result.getValue(); > return rate.floatValue(); > } > } > > // Driver to illustrate service invocation > public static void main(String[] args) > { > try > { > URL url=new > URL("http://services.xmethods.com:80/soap/servlet/rpcrouter"); > String zipcode= "94041"; > float temp = getTemp(url,zipcode); > System.out.println(temp); > } > catch (Exception e) {e.printStackTrace();} > } > } > > Regards, > > Farhan Siddique > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>