我现在在客户端调用服务端的方法,服务端的方法返回的是一个对象,这个方法里面包含一个对象数组
我现在调用的时候报错
org.xml.sax.SAXException: Found character data inside an array element while deserializing
public static void main(String[] args) {
System.err.print("调用远方webservice接口获取全部执收单位信息");
String res = "error";
try{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL("http://tbyfsoft.vicp.net:8080/tbyfzwpt/admincenter/ws/SyncUnitInfo"));
call.setOperationName(new QName("http://ws.admincenter.tbyf.com", "syncUnitInfo"));
call.addParameter(new QName("http://ws.admincenter.tbyf.com","userId"),XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName("http://ws.admincenter.tbyf.com","unitCode"),XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName("http://ws.admincenter.tbyf.com","pwd"),XMLType.XSD_STRING,ParameterMode.IN);
call.setUseSOAPAction(true);
call.setReturnType(new QName("http://ws.admincenter.tbyf.com",
"responce"), com.tbyf.nontax.POJO.QueryUnitInfoResponse.class); QName responce = new QName("http://tbyfsoft.vicp.net:8080/tbyfzwpt/admincenter/ws/SyncUnitInfo", "SyncUnitInfo");
QName info1 = new QName("http://tbyfsoft.vicp.net:8080/tbyfzwpt/admincenter/ws/SyncUnitInfo", "UnitInfo");
QName info2 = new QName("http://tbyfsoft.vicp.net:8080/tbyfzwpt/admincenter/ws/SyncUnitInfo", "ArrayOfUnitInfo");
call.registerTypeMapping(com.tbyf.nontax.POJO.QueryUnitInfoResponse.class, responce,
new BeanSerializerFactory(com.tbyf.nontax.POJO.QueryUnitInfoResponse.class, responce),
new BeanDeserializerFactory(com.tbyf.nontax.POJO.QueryUnitInfoResponse.class, responce));
call.registerTypeMapping(com.tbyf.nontax.POJO.UnitInfo.class, info1,
new BeanSerializerFactory(com.tbyf.nontax.POJO.UnitInfo.class, info1),
new BeanDeserializerFactory(com.tbyf.nontax.POJO.UnitInfo.class, info1));
call.registerTypeMapping(com.tbyf.nontax.POJO.UnitInfo[].class,info2,
new BeanSerializerFactory(com.tbyf.nontax.POJO.UnitInfo[].class, info2),
new BeanDeserializerFactory(com.tbyf.nontax.POJO.UnitInfo[].class, info2));
System.out.println("::::::::::::: " );
com.tbyf.nontax.POJO.QueryUnitInfoResponse info = (com.tbyf.nontax.POJO.QueryUnitInfoResponse)call.invoke(new Object[]{"001","4213000658","71D064E47EDC7FD6"});
System.out.println("@@@@@@@@@ " );
System.err.println(info.getMsg());
} catch (Exception e){
System.err.println("\nWebServiceError: 获取执收单位信息失败");
e.printStackTrace();
}
}
我现在调用的时候报错
org.xml.sax.SAXException: Found character data inside an array element while deserializing
public static void main(String[] args) {
System.err.print("调用远方webservice接口获取全部执收单位信息");
String res = "error";
try{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL("http://tbyfsoft.vicp.net:8080/tbyfzwpt/admincenter/ws/SyncUnitInfo"));
call.setOperationName(new QName("http://ws.admincenter.tbyf.com", "syncUnitInfo"));
call.addParameter(new QName("http://ws.admincenter.tbyf.com","userId"),XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName("http://ws.admincenter.tbyf.com","unitCode"),XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter(new QName("http://ws.admincenter.tbyf.com","pwd"),XMLType.XSD_STRING,ParameterMode.IN);
call.setUseSOAPAction(true);
call.setReturnType(new QName("http://ws.admincenter.tbyf.com",
"responce"), com.tbyf.nontax.POJO.QueryUnitInfoResponse.class); QName responce = new QName("http://tbyfsoft.vicp.net:8080/tbyfzwpt/admincenter/ws/SyncUnitInfo", "SyncUnitInfo");
QName info1 = new QName("http://tbyfsoft.vicp.net:8080/tbyfzwpt/admincenter/ws/SyncUnitInfo", "UnitInfo");
QName info2 = new QName("http://tbyfsoft.vicp.net:8080/tbyfzwpt/admincenter/ws/SyncUnitInfo", "ArrayOfUnitInfo");
call.registerTypeMapping(com.tbyf.nontax.POJO.QueryUnitInfoResponse.class, responce,
new BeanSerializerFactory(com.tbyf.nontax.POJO.QueryUnitInfoResponse.class, responce),
new BeanDeserializerFactory(com.tbyf.nontax.POJO.QueryUnitInfoResponse.class, responce));
call.registerTypeMapping(com.tbyf.nontax.POJO.UnitInfo.class, info1,
new BeanSerializerFactory(com.tbyf.nontax.POJO.UnitInfo.class, info1),
new BeanDeserializerFactory(com.tbyf.nontax.POJO.UnitInfo.class, info1));
call.registerTypeMapping(com.tbyf.nontax.POJO.UnitInfo[].class,info2,
new BeanSerializerFactory(com.tbyf.nontax.POJO.UnitInfo[].class, info2),
new BeanDeserializerFactory(com.tbyf.nontax.POJO.UnitInfo[].class, info2));
System.out.println("::::::::::::: " );
com.tbyf.nontax.POJO.QueryUnitInfoResponse info = (com.tbyf.nontax.POJO.QueryUnitInfoResponse)call.invoke(new Object[]{"001","4213000658","71D064E47EDC7FD6"});
System.out.println("@@@@@@@@@ " );
System.err.println(info.getMsg());
} catch (Exception e){
System.err.println("\nWebServiceError: 获取执收单位信息失败");
e.printStackTrace();
}
}
// 设置返回类型
call.registerTypeMapping(String[].class, qn, new ArraySerializerFactory(), new ArrayDeserializerFactory());
call.setReturnClass(String[][].class);
这是个二维的
String endpoint = "http://localhost:2820/WebService1.asmx";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint)); // 要调用的方法名
//call.setOperationName("HelloWorld");
// 设置调用方法参数
/*call.addParameter(new QName("http://localhost/", "manags"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);*/
QName qn=new QName("http://localhost/", "HelloWorld");
// 设置返回类型
call.registerTypeMapping(String[].class, qn, new ArraySerializerFactory(), new ArrayDeserializerFactory());
call.setReturnClass(String[][].class);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://localhost/HelloWorld"); // http://localhost/命名空间
call.setOperationName(new javax.xml.namespace.QName(
"http://localhost/", "HelloWorld")); Object resp=call.invoke(new Object[]{});
System.out.println(resp);
manags=(String[][])JavaUtils.convert(resp, String[][].class);