如何从WebService获得ArrayList返回

时间:2018-11-21 19:31:42

标签: java android

我有一个带有方法的Web服务,该方法返回一个带有两个值的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();

1 个答案:

答案 0 :(得分:0)

lista.add(resultado.toString());

首先,您必须了解toString的作用。 toString方法默认情况下会返回对象的引用(如果您不覆盖它的话)。这就是为什么它只存储一个引用数组列表的值是从Web服务返回的原因。

执行此操作

1-如果返回数组列表,则将其直接分配到arraylist中。 例如     ArrayList<String> lista=sobre.getResponse();

2-只是遍历结果并添加list。没有办法遍历list。我对每个循环都使用简单的方法。

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