I suggest that you use Apache Axis (http://ws.apache.org/axis) rather than Apache SOAP. Apache Axis provides much better support for document/literal.
Apache Axis is Apache's strategic Web services implementation. Apache SOAP has been on life support for more than 2 years, and there's no plan to upgrade it to support WSDL. Anne ----- Original Message ----- From: <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, June 11, 2003 9:15 AM Subject: Beginner question > > > > > Hi, > > I have experience with Java and XML, but am pretty new to SOAP and WSDL. > I've been able to invoke the demo web services provided at xmethods.com > using the Java client code provided with no problem. I've been trying to > invoke the Unisys Weather web service using the Currency Exchange Service > code as a starting point, with no success. After checking to see whether a > fault was generated, my code throws a java.lang.Exception. After doing > some research on WSDL, I believe part of the problem may be due to the > Unisys Weather web service not being encoded. I've included my code below. > If anyone would be willing to tell me where I've gone wrong, I'd really > appreciate it. > > Thanks, > > - Mike. > > > // > // sample client for the Unisys Weather service > // > > 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 UnisysWeatherClient { > > public static String getWeather (URL url, String zipCode) throws Exception { > > Call call = new Call (); > > // Set encoding style. Use the standard SOAP encoding > String encodingStyleURI = Constants.NS_URI_SOAP_ENC; > call.setEncodingStyleURI(encodingStyleURI); > > // Set service locator parameters > call.setTargetObjectURI ("http://www.unisys.com/WebServices/GetWeatherText"); > > call.setMethodName ("GetWeatherText"); > > // Create the 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 result > if (resp.generatedFault ()) { > throw new Exception(); > } else { > > // Call was succesfull. Extract response parameter and return > Parameter result = resp.getReturnValue (); > String weather = (String) result.getValue(); > return weather; > } > } > > // Driver to illustrate invocation of service > public static void main(String[] args) > { > try { > URL url=new URL("http://weather.unisysfsp.com/PDCWebService/WeatherServices.asmx"); > String zipCode = args[0]; > > String weather = getWeather(url,zipCode); > System.out.println(weather); > } > catch (Exception e) {e.printStackTrace();} > } > } >