Boa tarde a todos.
Considerando a necessidade de criar uma integração com o correios para calculo de preço e prazo para o frete me é dado 3 opções XML, SOAP e WSDL. Considerando que a opção REST não está disponivel (pelo menos nao encontrei nenhuma documentação) e que SOAP está depreciada (1.1) qual melhor opção e API á utilizar para realizar esta integração?
Engraçado que XML, SOAP e WSDL fazem parte da mesma estrutura, que é, para o java, JAX-WS. Basicamente, XML é o que transita, SOAP é o protocolo deste tipo de integração e WSDL é o contrato onde são definidos os modelos a serem utilizados para padronizar o sistema cliente e o sistema que disponibiliza o(s) web service(s).
É, sim, uma tecnologia mais antiga, porém, em larga utilização em várias empresas, dos mais diversos portes.
É mais complexa que REST? Com toda a certeza, porém, com um pouco de dedicação é possível criar um sistema bom, rápido e seguro.
1 curtida
Obrigado pela resposta. A api JAX-WS cuida das 3 partes? Transição do XML, utilização do protocolo SOAP e o WSDL?
A partir do WSDL você consegue criar um client para o web service que vai, através do protocolo SOAP, trafegar dados em XML.
Se você já tem o WSDL (seja o arquivo ou a URL para o mesmo), sua IDE permite criar um client básico.
Tudo que tenho é isso e umas tags a se utilizarem.
POST /calculador/CalcPrecoPrazo.asmx HTTP/1.1
Host: ws.correios.com.br
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<CalcDataMaxima xmlns="http://tempuri.org/">
<codigoObjeto>string</codigoObjeto>
</CalcDataMaxima>
</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<CalcDataMaximaResponse xmlns="http://tempuri.org/">
<CalcDataMaximaResult>
<Objetos>
<cObjeto>
<codigo>string</codigo>
<servico>string</servico>
<cepOrigem>string</cepOrigem>
<cepDestino>string</cepDestino>
<prazoEntrega>int</prazoEntrega>
<dataPostagem>string</dataPostagem>
<dataPostagemCalculo>string</dataPostagemCalculo>
<dataMaxEntrega>string</dataMaxEntrega>
<postagemDH>string</postagemDH>
<dataUltimoEvento>string</dataUltimoEvento>
<codigoUltimoEvento>string</codigoUltimoEvento>
<tipoUltimoEvento>string</tipoUltimoEvento>
<descricaoUltimoEvento>string</descricaoUltimoEvento>
<erro>string</erro>
<msgErro>string</msgErro>
<nuTicket>string</nuTicket>
</cObjeto>
<cObjeto>
<codigo>string</codigo>
<servico>string</servico>
<cepOrigem>string</cepOrigem>
<cepDestino>string</cepDestino>
<prazoEntrega>int</prazoEntrega>
<dataPostagem>string</dataPostagem>
<dataPostagemCalculo>string</dataPostagemCalculo>
<dataMaxEntrega>string</dataMaxEntrega>
<postagemDH>string</postagemDH>
<dataUltimoEvento>string</dataUltimoEvento>
<codigoUltimoEvento>string</codigoUltimoEvento>
<tipoUltimoEvento>string</tipoUltimoEvento>
<descricaoUltimoEvento>string</descricaoUltimoEvento>
<erro>string</erro>
<msgErro>string</msgErro>
<nuTicket>string</nuTicket>
</cObjeto>
</Objetos>
</CalcDataMaximaResult>
</CalcDataMaximaResponse>
</soap12:Body>
</soap12:Envelope>
Até achei uma API pronta no GIT, eu mando so os valores e a api cuida da formatação e envio, mas eu quero aprender integrar !
Esta estrutura que você postou são o que chamamos de payload.
O primeiro, aparenta ser o payload de request (o que é enviado) e o segundo de response (o que é recebido).
Apenas a partir deles não é possível fazer muita coisa, você precisa, realmente, é do WSDL.
Em geral, a URL de acesso a um WSDL apresenta um ?wsdl ao fim, podendo varia para ?WSDL ou para .wsdl, dependendo de como o WS foi implementado.
E por que o WSDL é tão importante?
O WSDL ou Web Service Definition Language é um XML que vai conter as informações de quais e quantos forem os serviços disponíveis, quais namespaces estão envolvidos, quais são as portas e os bindings, bem como, conterá a referência aos XSDs (Xml Schema Definition - definição da estrutura de XML a ser utilizada para construir o que será enviado ao servidor (request) e o que será retornado do servidor (response)).
1 curtida
Darlan, eu observei aqui que uma consulta nessa pagina
http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=08082650&sDsSenha=564321&sCepOrigem=74420180&sCepDestino=74303010&nVlPeso=1&nCdFormato=1&nVlComprimento=20&nVlAltura=20&nVlLargura=20&sCdMaoPropria=n&nVlValorDeclarado=0&sCdAvisoRecebimento=n&nCdServico=04510&nVlDiametro=0&StrRetorno=xml&nIndicaCalculo=3
passando os parametros corretos eu consigo os valores corretos referentes ao preço e prazo igual consta no site… A minha pergunta é: é muito feio eu utilizar essa forma para consulta de preço e prazo? É usual isso ai? Vou utilizar o Jquery pra pegar a XML de retorno e exibir na view os valores tao como enviar para o bean realizar o pedido baseado nesses valores…
Cara, este é um WS REST, pelo que dá pra perceber.