Gosta de compartilhar com todos a metodologia que utilizei para realizar a comunicação de objetos complexos (Matrizes) utilizando kasoap2.
Me webservice precisa receber o seguinte padrão:
Veja que temos dois objetos do tipo complexo, jornada e horarios.
public class Jornada {
int id_jornada;
String descricao;
Collection
}
Procurei muito no google e não encontrei uma solução, inclusive em alguns foruns era dito que não tinha como fazer esta comunicação.
public static int jornada_insere(Jornada jornada) {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapObject Soap_jornada = new SoapObject();
Soap_jornada.addProperty("id_jornada", jornada.getId_jornada());
Soap_jornada.addProperty("descricao", jornada.getDescricao());
for (int i = 0; i < jornada.getHorarios().size(); i++) {
SoapObject Soap_horarios = new SoapObject();
Soap_horarios.addProperty("id_horario", "0");
Soap_horarios.addProperty("horario_entrada", jornada.getHorarios().get(i).getHorario_entrada());
Soap_horarios.addProperty("horario_saida", jornada.getHorarios().get(i).getHorario_entrada());
Soap_jornada.addProperty("horarios", Soap_horarios);
}
request.addProperty("jornada", Soap_jornada);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE HttpTransport = new HttpTransportSE(URL);
try {
HttpTransport.call("insere_jornada", envelope);
SoapObject resposta = (SoapObject) envelope.getResponse();
Log.i("resposta", resposta.toString());
} catch (Exception e) {
Log.e("Erro", "WS Jornada", e);
return 0;
}
return 1;
}
Isso ai, espero ter ajudado, deixem seus comentários.