CONSUMIR UM WEBSERVICE SERIALIZADO

NEPHELIN 20/12/2013 23:05:12
#432380
Boa noite a todos
Possuo o seguinte cenário...

Estou consumindo um WebService de terceiro (a qual não tenho acesso a alterar a codificação)
Este WebService é SOA em um link wsdl
Segue retorno do WS
<soapenv:Envelope xmlns:soapenv=[Ô]http://schemas.xmlsoap.org/soap/envelope/[Ô] xmlns:xsd=[Ô]http://www.w3.org/2001/XMLSchema[Ô] xmlns:xsi=[Ô]http://www.w3.org/2001/XMLSchema-instance[Ô]>
<soapenv:Body>
<ns1:obterListaResponse soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xmlns:ns1=[Ô]http://ws.ade02.appa.pr.gov[Ô]>
<obterListaReturn soapenc:arrayType=[Ô]ns2:SaidasVeiculosFaixa[1][Ô] xsi:type=[Ô]soapenc:Array[Ô] xmlns:ns2=[Ô]urn:ws.ade02.XXXX.pr.gov[Ô] xmlns:soapenc=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô]>
<obterListaReturn href=[Ô]#id0[Ô]/>
</obterListaReturn>
</ns1:obterListaResponse>
<multiRef id=[Ô]id0[Ô] soapenc:root=[Ô]0[Ô] soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xsi:type=[Ô]ns3:SaidasVeiculosFaixa[Ô] xmlns:soapenc=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xmlns:ns3=[Ô]urn:ws.ade02.appa.pr.gov[Ô]>
<anoDocumento href=[Ô]#id1[Ô]/>
<cargaEstaZerada href=[Ô]#id2[Ô]/>
<cnpjArmazemFaixa xsi:type=[Ô]soapenc:string[Ô] xsi:nil=[Ô]true[Ô]/>
<cnpjArmazemRetaguarda xsi:type=[Ô]soapenc:string[Ô]>99999999999999</cnpjArmazemRetaguarda>
<cnpjImportador xsi:type=[Ô]soapenc:string[Ô]>99999999999999</cnpjImportador>
<cnpjOperador xsi:type=[Ô]soapenc:string[Ô]>99999999999999</cnpjOperador>
<codigoBarrasAutorizacao href=[Ô]#id3[Ô]/>
<codigoProduto href=[Ô]#id4[Ô]/>
<cpfCondutor xsi:type=[Ô]soapenc:string[Ô]>99999999999</cpfCondutor>
<dataEntrada xsi:type=[Ô]xsd:dateTime[Ô]>2013-12-14T14:05:34.000Z</dataEntrada>
<dataSaida xsi:type=[Ô]xsd:dateTime[Ô]>2013-12-14T16:09:41.000Z</dataSaida>
<nomeArmazemFaixa xsi:type=[Ô]soapenc:string[Ô] xsi:nil=[Ô]true[Ô]/>
<nomeArmazemRetaguarda xsi:type=[Ô]soapenc:string[Ô]>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</nomeArmazemRetaguarda>
<nomeCondutor xsi:type=[Ô]soapenc:string[Ô]>izaias kerninski da costa</nomeCondutor>
<nomeImportador xsi:type=[Ô]soapenc:string[Ô]>XXXXXXXXXXXXXXXXXXX (XXXXXXX)</nomeImportador>
<nomeNavio xsi:type=[Ô]soapenc:string[Ô]>XXXXXXXXXXX</nomeNavio>
<nomeOperador xsi:type=[Ô]soapenc:string[Ô]>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)</nomeOperador>
<nomeProduto xsi:type=[Ô]soapenc:string[Ô]>XXXXX</nomeProduto>
<numeroDocumento xsi:type=[Ô]soapenc:string[Ô]>99999999</numeroDocumento>
<numeroLote href=[Ô]#id5[Ô]/>
<numeroProgramacaoNavio href=[Ô]#id6[Ô]/>
<pesoEntrada href=[Ô]#id7[Ô]/>
<pesoSaida href=[Ô]#id8[Ô]/>
<placaIdentificacaoCarreta01 xsi:type=[Ô]soapenc:string[Ô]>CBS2597</placaIdentificacaoCarreta01>
<placaIdentificacaoCarreta02 xsi:type=[Ô]soapenc:string[Ô] xsi:nil=[Ô]true[Ô]/>
<placaIdentificacaoVeiculo xsi:type=[Ô]soapenc:string[Ô]>LYR2619</placaIdentificacaoVeiculo>
<porao xsi:type=[Ô]soapenc:string[Ô]>3</porao>
<terno xsi:type=[Ô]soapenc:string[Ô]>1</terno>
<tipoDocumento xsi:type=[Ô]soapenc:string[Ô]>DI</tipoDocumento>
</multiRef>
<multiRef id=[Ô]id1[Ô] soapenc:root=[Ô]0[Ô] soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xsi:type=[Ô]soapenc:int[Ô] xmlns:soapenc=[Ô]Pro/[Ô]>2013</multiRef>
<multiRef id=[Ô]id8[Ô] soapenc:root=[Ô]0[Ô] soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xsi:type=[Ô]soapenc:int[Ô] xmlns:soapenc=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô]>41660</multiRef>
<multiRef id=[Ô]id5[Ô] soapenc:root=[Ô]0[Ô] soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xsi:type=[Ô]soapenc:int[Ô] xmlns:soapenc=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô]>12</multiRef>
<multiRef id=[Ô]id4[Ô] soapenc:root=[Ô]0[Ô] soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xsi:type=[Ô]soapenc:int[Ô] xmlns:soapenc=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô]>4899</multiRef>
<multiRef id=[Ô]id7[Ô] soapenc:root=[Ô]0[Ô] soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xsi:type=[Ô]soapenc:int[Ô] xmlns:soapenc=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô]>17100</multiRef>
<multiRef id=[Ô]id6[Ô] soapenc:root=[Ô]0[Ô] soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xsi:type=[Ô]soapenc:int[Ô] xmlns:soapenc=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô]>37573</multiRef>
<multiRef id=[Ô]id3[Ô] soapenc:root=[Ô]0[Ô] soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xsi:type=[Ô]soapenc:long[Ô] xmlns:soapenc=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô]>6799542037201</multiRef>
<multiRef id=[Ô]id2[Ô] soapenc:root=[Ô]0[Ô] soapenv:encodingStyle=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô] xsi:type=[Ô]soapenc:boolean[Ô] xmlns:soapenc=[Ô]http://schemas.xmlsoap.org/soap/encoding/[Ô]>false</multiRef>
</soapenv:Body>
</soapenv:Envelope>
Nota-se que no campo
<anoDocumento href=[Ô]#id1[Ô]/> onde deveria ser <anoDocumento href=[Ô]#2013[Ô]/>
<cargaEstaZerada href=[Ô]#id2[Ô]/> onde deveria ser <cargaEstaZerada href= false />
<codigoBarrasAutorizacao href=[Ô]#id3[Ô]/> onde deveria ser <codigoBarrasAutorizacao href=[Ô]6799542037201[Ô]/>
<codigoProduto href=[Ô]#id4[Ô]/> onde deveria ser <codigoProduto href=[Ô]4899[Ô]/>
<numeroLote href=[Ô]#id5[Ô]/> onde deveria ser <numeroLote href=[Ô]12[Ô]/>
<numeroProgramacaoNavio href=[Ô]#id6[Ô]/> onde deveria ser <numeroProgramacaoNavio href=[Ô]37573[Ô]/>
<pesoEntrada href=[Ô]#id7[Ô]/> onde deveria ser <pesoEntrada href=[Ô]17100[Ô]/>
<pesoSaida href=[Ô]#id8[Ô]/> onde deveria ser <pesoSaida href=[Ô]41660[Ô]/>

Só há o código que referencia outra área do documento que estão todos no </multiRef>

Como consigo capturar estas informações?

Segue o meu código de consumo

SaidasVeiculosWSService ax = new SaidasVeiculosWSService ();

SaidasVeiculos[] lista = ax.obterListaSaidasVeiculosFaixaOperadorPortuarioPorPeriodo([Ô]99999999999999[Ô], [Ô]09999999999[Ô], [Ô][Ô], [Ô]99999999999999999999999999999999[Ô], [Ô]0000-00-00 00:00[Ô], [Ô]0000-00-00 00:00[Ô]);


Estes campos estão vindo “null” na consulta... os demais estão preenchendo normalmente.
Nota:. A lista que postei possui um registro... porem normalmente são mais de 150.




Já procurei em vários post mas só encontrei como serializar e deserializar o WebService havendo acesso ao código do ws, que não é o meu caso... só posso consumir o mesmo

Se alguém tiver uma dica eu agradeço
PROFESSOR 29/12/2013 22:39:48
#432517
obterListaSaidasVeiculosFaixaOperadorPortuarioPorPeriodo é uma das funções do WebService que você está consumindo.
Tanto esta quanto as demais funções que devam existir no WebService recebem parâmetros e possuem um retorno.
A definição desses parâmetros e dos retornos tem de ser detalhados á você pelo distribuidor/fornecedor do WebService.

Se o retorno é como XML, você pode ler o resultado dessa operação diretamente em um Dataset.
Algo como (DataSet)lista = ax.obterListaSaidasVeiculosFaixaOperadorPortuarioPorPeriodo([Ô]99999999999999[Ô], [Ô]09999999999[Ô], [Ô][Ô], [Ô]99999999999999999999999999999999[Ô], [Ô]0000-00-00 00:00[Ô], [Ô]0000-00-00 00:00[Ô]);

Lembrando que um DataSet pode ter várias tabelas e que a consulta ao WebService respeite rigorosamente as especificações do fornecedor, ok?
Faça seu login para responder