如何从WebService获得ArrayList返回



我有一个WebService,它有一个方法返回一个有两个值的ArrayList,在Android中我需要保存在另一个ArrayList中,但当我执行.add((时,会给我一个有一个值[string,string]的ArrayList。

以下是WebService方法的代码:

@WebMethod(operationName = "mostarNombre")
public ArrayList<String> mostarNombre(@WebParam(name = "id") int id) {
String nomb = "";
ArrayList<String> list = new ArrayList<String>();
try {
DriverManager.registerDriver(new OracleDriver());
Connection cn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:xxx:xxx", xxxx, xxxx);
String query = "select * from ejemplo where id = 1";
Statement stmt = cn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
nomb = rs.getString("nombre");
String ids = rs.getString("id");
list.add(nomb);
list.add(ids);
} 
} catch (SQLException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}

这是我在Android中的方法的代码:

public void consultar(View v){
try {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
StrictMode.setThreadPolicy(policy);
String resultadoFINAL;
//Creacion de la Solicitud
SoapObject request = new SoapObject(NAMESPACE, METHOD2);
//Creacion del Envelope
SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(SoapEnvelope.VER11);
sobre.dotNet = true;
sobre.setOutputSoapObject(request);
//Creacion del transporte
HttpTransportSE transporte = new HttpTransportSE(URL);
// Paso de parámetro
PropertyInfo numeroEmp = new PropertyInfo();
numeroEmp.setName("numero");
request.addProperty(numeroEmp);
//Llamada
transporte.call(SOAPACTION2, sobre);
//Resultado
Object resultado = (Object) sobre.getResponse();
ArrayList<String> lista = new ArrayList<String>();
lista.add(resultado.toString());
String a = lista.get(0);
tvConsulta.setText(lista.get(0));
tvEj.setText(lista.get(1));
}catch (Exception e) {
e.printStackTrace();
}
}

当我做lista.get(0(时,我得到一个像[string,string]这样的值。我该怎么解决这个问题?

编辑:

最终解决方案是铸造到Vector:

Vector lista = (Vector) sobre.getResponse();

lista.add(resultado.toString(((;

首先你必须了解toString的作用。如果不重写toString方法,则默认情况下返回对象的引用。这就是为什么它只存储一个值,该值是webservice返回的数组列表的引用。

做这个

1-如果它的返回数组列表,则直接在arraylist中赋值。例如ArrayList<String> lista=sobre.getResponse();

2-只需迭代结果和添加列表。这里没有迭代列表的方法。我对每个循环都使用simple。

for(String value:resultdo){
lista.add(value);
}

最新更新