0
I send an object containing a list of objects, the web service recognizes the object but does not recognize the list.
This is the source code:
public RetornoDto GravarRecebimentoNf (NotaFiscal nf, int codFilial, String nummatricula) throws Exception {
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
SoapObject RelacaoDetalhePedido = new SoapObject("http://schemas.microsoft.com/2003/10/Serialization/Arrays", "RelacaoDetalhePedido");
for(int i = 0; i < nf.getItens().size(); i++){
SoapObject RelacaoImeiProduto = new SoapObject(NAMESPACE, "RelacaoImeiProduto");
for(int j = 0; j < nf.getItens().get(i).getListDetalheImeiPedidoDescentralizadoDto().size(); j++){
SoapObject DetalheImeiPedidoDescentralizadoDto = new SoapObject(NAMESPACE, "DetalheImeiPedidoDescentralizadoDto");
DetalheImeiPedidoDescentralizadoDto.addProperty("Sequencial", nf.getItens().get(i).getListDetalheImeiPedidoDescentralizadoDto().get(j).getSequencial());
SoapObject RelacaoImei = new SoapObject(NAMESPACE, "RelacaoImei");
for(String imei : nf.getItens().get(i).getListDetalheImeiPedidoDescentralizadoDto().get(j).getRelacaoImei()){
RelacaoImei.addProperty("string", imei);
}
DetalheImeiPedidoDescentralizadoDto.addProperty("RelacaoImei", RelacaoImei);
RelacaoImeiProduto.addProperty("DetalheImeiPedidoDescentralizadoDto", DetalheImeiPedidoDescentralizadoDto);
}
SoapObject DetalhePedidoDescentralizadoDto = new SoapObject(NAMESPACE, "DetalhePedidoDescentralizadoDto");
DetalhePedidoDescentralizadoDto.addProperty("CodigoSap", nf.getItens().get(i).getCodSap());
DetalhePedidoDescentralizadoDto.addProperty("QuantidadaRecebida",nf.getItens().get(i).getQtd());
DetalhePedidoDescentralizadoDto.addProperty("UnidadeComercializacao",
nf.getItens().get(i).getNomUnidadeComercializacao().equals("anyType{}") ? "" : nf.getItens().get(i).getNomUnidadeComercializacao());
DetalhePedidoDescentralizadoDto.addProperty("ValorUnitario", String.valueOf(nf.getItens().get(i).getValUnitario()));
DetalhePedidoDescentralizadoDto.addProperty("ValorTotalBruto",String.valueOf(nf.getItens().get(i).getValTotalBruto()));
DetalhePedidoDescentralizadoDto.addProperty("Cfop",
nf.getItens().get(i).getNumCfop().equals("anyType{}") ? "" : nf.getItens().get(i).getNumCfop());
DetalhePedidoDescentralizadoDto.addProperty("NumeroContrato",nf.getItens().get(i).getNumContrato());
DetalhePedidoDescentralizadoDto.addProperty("SequencialItemContrato",nf.getItens().get(i).getNumSequencialItemContrato());
DetalhePedidoDescentralizadoDto.addProperty("ValorCusto",String.valueOf(nf.getItens().get(i).getValCusto()));
DetalhePedidoDescentralizadoDto.addProperty("QuantidadeMovimentacao",nf.getItens().get(i).getQtdMovimentacao());
DetalhePedidoDescentralizadoDto.addProperty("QuantidadeAuditada",nf.getItens().get(i).getQtdRecebido());
DetalhePedidoDescentralizadoDto.addProperty("SequencialItem", nf.getItens().get(i).getNumSequencialItem());
RelacaoDetalhePedido.addProperty("DetalhePedidoDescentralizadoDto", DetalhePedidoDescentralizadoDto);
}
SoapObject pedidoDescentralizado = new SoapObject(NAMESPACE, "pedidoDescentralizado");
pedidoDescentralizado.addProperty("CodigoFilial", codFilial);
pedidoDescentralizado.addProperty("ChaveNFe", nf.getNumNotaFiscal().toString());
pedidoDescentralizado.addProperty("NomeUsuario", nummatricula);
pedidoDescentralizado.addProperty("RelacaoDetalhePedido", RelacaoDetalhePedido);
pedidoDescentralizado.addProperty("ValorTotalBaseCalculo", String.valueOf(nf.getValTotalBaseCalculo()));
pedidoDescentralizado.addProperty("NumeroFatura",
nf.getNumFatura().equals("anyType{}") ? "" : nf.getNumFatura());
pedidoDescentralizado.addProperty("ValorOriginalFatura", String.valueOf(nf.getValOriginalFatura()));
pedidoDescentralizado.addProperty("ValorLiquidoFatura", String.valueOf(nf.getValLiquidoFatura()));
try{
SoapObject reqGravarNfe = new SoapObject(NAMESPACE, METHOD_GRAVAR_RECEBIMENTO_NF);
reqGravarNfe.addProperty("pedidoDescentralizado", pedidoDescentralizado);
SoapSerializationEnvelope envelopeGravarNfe =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelopeGravarNfe.implicitTypes = true;
envelopeGravarNfe.dotNet = false;
envelopeGravarNfe.setOutputSoapObject(reqGravarNfe);
androidHttpTransport.debug = true;
androidHttpTransport.call(SOAP_ACTION_GRAVAR_RECEBIMENTO_NF, envelopeGravarNfe);
Log.d("XML_REQUEST", androidHttpTransport.requestDump);
Log.d("XML_RESPONSE", androidHttpTransport.responseDump);
if(envelopeGravarNfe.bodyIn instanceof SoapFault){
Log.e(WS.class.toString(), ((SoapFault) envelopeGravarNfe.bodyIn).getStackTrace().toString());
throw new Exception(((SoapFault) envelopeGravarNfe.bodyIn).getMessage());
}
SoapObject objSoap = (SoapObject) envelopeGravarNfe.bodyIn;
SoapObject objSoapNfe = (SoapObject) objSoap.getProperty(0);
RetornoDto retorno = new RetornoDto();
retorno.setContemErro(Boolean.parseBoolean(objSoapNfe.getPropertySafely("ContemErro", false).toString()));
retorno.setMensagemErro(objSoapNfe.getPropertySafely("MensagemErro", "").toString());
retorno.setCodigoBarrasInexistente(objSoapNfe.getPropertySafely("CodigoBarrasInexistente", "").toString());
return retorno;
}catch (Exception e){
e.printStackTrace();
throw e;
}
}
This is the XML request
<v:Envelope
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns:d="http://www.w3.org/2001/XMLSchema"
xmlns:c="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
<n0:GravarRecebimentoPedidoDescentralizado id="o0" c:root="1"
xmlns:n0="http://tempuri.org/">
<pedidoDescentralizado>
<CodigoFilial>309</CodigoFilial>
<ChaveNFe>32190304904042000450550010002008301677770271</ChaveNFe>
<NomeUsuario>943665</NomeUsuario>
<RelacaoDetalhePedido>
<DetalhePedidoDescentralizadoDto>
<CodigoSap>000000000000157309</CodigoSap>
<QuantidadaRecebida>20</QuantidadaRecebida>
<UnidadeComercializacao></UnidadeComercializacao>
<ValorUnitario>0.0</ValorUnitario>
<ValorTotalBruto>0.0</ValorTotalBruto>
<Cfop></Cfop>
<NumeroContrato>7500002424</NumeroContrato>
<SequencialItemContrato>00500</SequencialItemContrato>
<ValorCusto>690.0</ValorCusto>
<QuantidadeMovimentacao>0</QuantidadeMovimentacao>
<QuantidadeAuditada>1</QuantidadeAuditada>
<SequencialItem>20</SequencialItem>
</DetalhePedidoDescentralizadoDto>
</RelacaoDetalhePedido>
<ValorTotalBaseCalculo>0.0</ValorTotalBaseCalculo>
<NumeroFatura></NumeroFatura>
<ValorOriginalFatura>0.0</ValorOriginalFatura>
<ValorLiquidoFatura>0.0</ValorLiquidoFatura>
</pedidoDescentralizado>
</n0:GravarRecebimentoPedidoDescentralizado>
</v:Body></v:Envelope>
And here the web service receiving the object with the null list
Has anyone been there or knows a solution?
It seems a common problem, but found no answer in the forum.