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