1.
1 2500多个城市天气预报 WEB服务公用事业 2 Endpoint:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx 3 Disco:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?disco 4 WSDL:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl 5 6 代码如下: 7 8 import java.rmi.RemoteException; 9 10 import javax.xml.namespace.QName;11 import javax.xml.rpc.ServiceException;12 13 import org.apache.axis.client.Call;14 import org.apache.axis.client.Service;15 16 17 18 19 public class Weather {20 public static void main(String[] args) throws ServiceException,21 RemoteException {22 String cityCode = "北京";23 String userId = "";24 // http://WebXml.com.cn/是wsdl中definitions根节点的targetNamespace属性25 // webservice路径26 // 这里后面加不加 "?wsdl" 效果都一样的27 String endpoint = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl";28 String[] res = null;29 30 // 查询城市天气的接口方法名31 String operationName = "getWeather";32 // 定义service对象33 Service service = new Service();34 // 创建一个call对象35 Call call = (Call) service.createCall();36 // 设置目标地址,即webservice路径37 call.setTargetEndpointAddress(endpoint);38 // 设置操作名称,即方法名称39 call.setOperationName(new QName("http://WebXml.com.cn/", operationName));40 // 设置方法参数41 call.addParameter(new QName("http://WebXml.com.cn/", "theCityCode"),42 org.apache.axis.encoding.XMLType.XSD_STRING,43 javax.xml.rpc.ParameterMode.IN);44 call.addParameter(new QName("http://WebXml.com.cn/", "theUserID"),45 org.apache.axis.encoding.XMLType.XSD_STRING,46 javax.xml.rpc.ParameterMode.IN);47 // 设置返回值类型48 // 对于返回是字符串数组的返回类型只有这两种可行49 50 // call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_VECTOR);51 call.setReturnClass(java.lang.String[].class);52 53 call.setUseSOAPAction(true);54 call.setSOAPActionURI("http://WebXml.com.cn/" + "getWeather");55 56 res = (String[]) call.invoke(new Object[] { cityCode, userId });57 58 // 如果返回类型是org.apache.axis.encoding.XMLType.SOAP_VECTOR时用下面的转型接收59 // Vector v=(Vector) call.invoke(new Object[]{cityCode,userId});60 for (String str : res) {61 System.out.println(str);62 }63 }64 }