java 调用.net 的webservice,返回值为一维数组

以调用http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl的天气预报为例:

1.代码

 

import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class WeatherWebService {

 public static String[] getWeather(String cityCode)
 {
//   http://WebXml.com.cn/是wsdl中definitions根节点的targetNamespace属性

  // webservice路径
  // 这里后面加不加 "?wsdl" 效果都一样的
  String endpoint = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl";
  String[] res = null;

  // 查询城市天气的接口方法名
  String operationName = "getWeather";
  // 定义service对象
  Service service = new Service();
  // 创建一个call对象
  Call call;
  try {
   call = (Call) service.createCall();
   // 设置目标地址,即webservice路径
   call.setTargetEndpointAddress(endpoint);
   // 设置操作名称,即方法名称
   call.setOperationName(new QName("http://WebXml.com.cn/",
     operationName));
   // 设置方法参数
   call.addParameter(new QName("http://WebXml.com.cn/", "theCityCode"),
     org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
   call.addParameter(new QName("http://WebXml.com.cn/", "theUserID"),
     org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
   // 设置返回值类型
   // 对于返回是字符串数组的返回类型只有这两种可行
   call.setReturnClass(java.lang.String[].class);
   call.setUseSOAPAction(true);
   call.setSOAPActionURI("http://WebXml.com.cn/" + "getWeather");
   try {
    res = (String[]) call.invoke(new Object[] { cityCode, "" });
   } catch (RemoteException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }

   // 如果返回类型是org.apache.axis.encoding.XMLType.SOAP_VECTOR时用下面的转型接收
   // Vector v=(Vector) call.invoke(new Object[]{cityCode,userId});
   
  } catch (ServiceException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return res;
 }
 
 public static void main(String args[]) throws RemoteException {

  String res[] = getWeather("2013"); //上海
   
  for (String str : res) {
   System.out.println(str);
  }
 }

}

 

2.运行结果:

 

直辖市 上海
上海
2013
2010/01/11 14:21:05
今日天气实况:气温:1.9℃;风向/风力:西南风 小于3级;湿度:91%;气压:1027.1hPa
空气质量:良;紫外线强度:最弱
穿衣指数:天气寒冷,建议着厚羽绒服、毛皮大衣加厚毛衣等隆冬服装。年老体弱者尤其要注意保暖防冻。
感冒指数:将有一次强降温过程,天气寒冷,且风力较强,极易发生感冒,请特别注意增加衣服保暖防寒。
晨练指数:有雪,风力稍大,早晨天气寒冷,请避免户外晨练,建议在室内做适当锻炼,保持身体健康。
洗车指数:不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。
晾晒指数:有降水,不适宜晾晒。如果非晾晒不可,请在室内准备出充足的空间。
旅游指数:风稍大,稍冷,有雨夹雪,旅游指数一般,但做好保暖措施还是可以出去欣赏雪景的,出行请注意携带雨具。
路况指数:有雨夹雪,路面湿滑,车辆易打滑,请保持车距,减慢车速,小心驾驶。
舒适度指数:白天天气较凉,且风力较强,同时在降雨天气的伴随下,会使您感觉偏冷,不很舒适,请注意添加衣物。
1月11日 雨夹雪转阴
0℃/3℃
北风4-5级
6.gif
2.gif
1月12日 多云
-2℃/4℃
西北风4-5级
1.gif
1.gif
1月13日 晴转多云
-2℃/3℃
西北风4-5级转东北风3-4级
0.gif
1.gif
1月14日 晴转多云
4℃/10℃
南风微风转3-4级
0.gif
1.gif
1月15日 多云转阴
5℃/8℃
东北风3-4级
1.gif
2.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值