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 }

 

posted on 2017-11-18 10:20  Sharpest  阅读(254)  评论(0编辑  收藏  举报