问题描述
CXF调用.NET的WebService,在WebService中返回一个string[]数组,而在WSDL中描述为ArrayOfString,请问我该如果转化这个类型并取出数据?我是这样来调用的:DynamicClientFactory dcf = DynamicClientFactory.newInstance();org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:16249/WebSite1/Service.asmx?wsdl");Object reply = null;try {reply = client.invoke("testArray", new Object[] {});} catch (Exception e) {e.printStackTrace();}Object[] replys = (Object[]) reply;for (Object o : replys) {System.out.println(o);}打印出来的是一个ArrayOfString类型。我该怎样取得里面的数据呢?这样调对不对?还有别的办法吗? 问题补充:7454103 写道
解决方案
这个是 ArrayOfString 的源码!相信你看了之后就知道咋遍历或者读内容了!一般你用工具生成 客户端的时候 这些都生成好了的!public class ArrayOfString { @XmlElement(required = true, nillable = true) protected List<String> string; public List<String> getString() { if (string == null) { string = new ArrayList<String>(); } return this.string; }}ArrayOfString result = service.getWeateherByCity("北京");if(result != null) {List<String> weathers = result.getString();for(int i = 0; i < weathers.size(); i++) {System.out.println(weathers.get(i));}
解决方案二:
引用java.lang.ClassCastException: services.wms.huike.com.ArrayOfString cannot be cast to com.huike.wms.services.ArrayOfString 这个错应该是你 的 ArrayOfString 引入的类型不对!自己检查下:引入: com.huike.wms.services.ArrayOfString [WebMethod] public string HelloWorld() { return "Hello !! this is lucky"; } [WebMethod] public string[] testArray() { return new string[]{"1","2","3"}; } 这个两个方法 返回值的类型不同! 可能不能按统一的方式处理!引用ArrayOfString result = service.getWeateherByCity("北京"); if(result != null) { List<String> weathers = result.getString(); for(int i = 0; i < weathers.size(); i++) { System.out.println(weathers.get(i)); } 这个是肯定行的! 我本地跑了 好多遍了! 没问题!