axis解析webxml网站提供的天气、火车问题
本人一菜,想实现天气、火车调用,从网上查了用axis的例子。
但是只有返回 一维字符串数组 才能够解析成功。
像是下面这种,DataSet的却不行,报错 序列化怎么怎么样..
还有这种..更是不知道怎么办了
返回数据:DataSet,Item.(TrainStation)=车站名称、Item.(ArriveTime)=到站时间、Item.(StartTime)=发车时间、Item.(KM)=里程(KM)
个人觉得是返回类型的原因,但是axis的类型都不懂,不知道怎么办,求大神指点。
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_VECTOR);
这是源码,此方法调用不需要传参
目的是获得中国省份、直辖市、地区;国家名称(国外)和与之对应的ID
String cityCode = "北京";axiswebService?java? axis webservice java 天气
String userId = "";
// 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 = "getRegionDataset";
// 定义service对象
Service service = new Service();
// 创建一个call对象
Call 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.setReturnType(org.apache.axis.encoding.XMLType.SOAP_VECTOR);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://WebXml.com.cn/" + operationName);
call.invoke(new Object[] { });
[解决办法]
DataSet是.net的特有类型,java没有,无法序列化,你应该自己写解析方法。
可以参考这篇文章处理dataset,http://heweiya.iteye.com/blog/39025