java.lang.RuntimeException:无法序列化WebService

时间:2018-11-23 17:26:10

标签: java android

你好,我有一个带有ArrayList参数的WebService方法,在Android中,我有一种方法可以将元素添加到ArrayList中并在PropertyInfo中执行setValue,但是却给了我一个例外。

这是WebService方法的代码:

@WebMethod(operationName = "insertar")
public int insertar(@WebParam(name = "IdVideo") ArrayList video) {
    int afectados = 0;
    try {
        String idVideo = video.get(0).toString();
        String titulo = video.get(1).toString();
        String canal = video.get(2).toString();
        int visitas = Integer.parseInt(video.get(3).toString());
        String fecha = video.get(4).toString();

        Date fechaSubida = new SimpleDateFormat("dd/MM/yyyy").parse(fecha);

        DriverManager.registerDriver(new OracleDriver());
        Connection cn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:xx:xx", "xxx", "xx");

        Statement sentencia = cn.createStatement();
        afectados = sentencia.executeUpdate("insert into favoritos values('" + idVideo + "', '" + titulo + "', '" + canal + "', '" + visitas + "', '" + fechaSubida + "')");

        if (afectados > 0) {
            System.out.println("Dato Insertado");
        } else {
            System.out.println("No Insertado");
        }

        return afectados;

    } catch (SQLException ex) {
        Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
    } catch (ParseException ex) {
        Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
    }
    return afectados;
}

这里是Andoid方法的代码:

public void insertar(View v){
    try {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();

        StrictMode.setThreadPolicy(policy);

        String resultadoFINAL;
        String idVideo = this.etIdVideo.getText().toString();
        String titulo = this.etTitulo.getText().toString();
        String canal = this.etCanal.getText().toString();
        String visitas = this.etVisitas.getText().toString();
        String fecha = this.etFecha.getText().toString();

        ArrayList<String> listaInsert = new ArrayList();
        listaInsert.add(idVideo);
        listaInsert.add(titulo);
        listaInsert.add(canal);
        listaInsert.add(visitas);
        listaInsert.add(fecha);

        //Creacion de la Solicitud
        SoapObject request = new SoapObject(NAMESPACE, METHOD3);
        //Creacion del Envelope
        SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        sobre.setOutputSoapObject(request);
        //Creacion del transporte
        HttpTransportSE transporte = new HttpTransportSE(URL);

        // Paso de parámetro
        PropertyInfo dni = new PropertyInfo();
        dni.setName("numerodni");
        dni.setValue(listaInsert);
        request.addProperty(dni);

        //Llamada
        transporte.call(SOAPACTION3, sobre);

        //Resultado
        Object resultado = (Object) sobre.getResponse();
        resultadoFINAL = resultado.toString();
        Toast.makeText(getApplicationContext(), resultadoFINAL, Toast.LENGTH_LONG).show();

    }catch (Exception e) {
        e.printStackTrace();
    }
}

此行transporte.call(SOAPACTION3, sobre);中有一个例外 我认为添加PropertyInfo之类的ArrayList是一个问题。

我的英语不好,但是希望您能为我提供帮助,如果需要更多代码,请教我,谢谢!

0 个答案:

没有答案