Histórico de Revisões



Documentos relacionados
Histórico de Revisões

Histórico de Revisões

Poder Judiciário e órgãos da Administração Pública

Tutorial. Começando a Criar Aplicativos SMS

Registro de Imóveis. Para os Cartórios de Registro de Imóveis o sistema de Indisponibilidade possui três perfis de acesso:

BC CORREIO SISTEMA DE CORREIO ELETRÔNICO DO BANCO CENTRAL DO BRASIL. Manual do Web Service

Consulta de endereço através do Cep

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

MANUAL DE CARGA DA CENTRAL DE INFORMAÇÕES DO REGISTRO CIVIL NACIONAL CRC NACIONAL. Provimento nº 38/2014 e 46/2015 Conselho Nacional de Justiça (CNJ)

MANUAL DE CARGA DA CENTRAL DE INFORMAÇÕES DO REGISTRO CIVIL NACIONAL CRC NACIONAL. Provimento nº 38/2014 e 46/2015 Conselho Nacional de Justiça (CNJ)

Target. Manual de Integração SOAP. versão 1.0 /

Manual de Integração WebCheckout

WEBSERVICE CNA Cadastro Nacional Adoção

MANUAL DE INTEGRAÇÃO. Padrão de envio e recebimento de dados. Contato suporte@gtplan.com.br

XML: uma introdução prática X100. Helder da Rocha

Roteiro para Transmissão Ambiente de Testes da Guias Online

Manual de utilização do módulo de Indisponibilidade de bens

SIOE-E: WebService público DGAEP

Consultar Dados de Transação

Acesso ao sistema. Os cartórios judiciais e seus respectivos diretores serão previamente cadastrados no sistema.

MANUAL DO ADMINISTRADOR LOCAL. Entidade Municipal

Integração API: Manual de Pré- cadastro de Usuários Última atualização: Julho 2010

Sistema Protocolo Integrado Manual de Integração ao Web Service

Safeweb DLL biblioteca para desenvolvimento

Núcleo de Relacionamento com o Cliente. de Relacionamento com o Cliente GUIA PRÁTICO DE USO. Produtos

Sistema Eletrônico do Serviço de Informações ao Cidadão e-sic

PROCEDIMENTOS PARA AQUISIÇÃO

A pessoa que tenha imóvel cadastrado no Sistema Nacional de Cadastro Rural SNCR.

Sistema Integrado de Gerenciamento do ISS SIG-ISS Manual de integração do WebService para NFS-e

UltraCard Manual de integração via WebService Página 1/13. UltraCard. Manual de integração via WebService. Versão 2.5

WEBSERVICES DE INTEGRAÇÃO PROVIMENTO 13 x SISTEMA DE CARTÓRIOS VERSÃO 2.0

Outlook XML Reader Versão Manual de Instalação e Demonstração UNE Tecnologia

NOTA FISCAL DE SERVIÇO ELETRÔNICA (NFS-e) Manual de Utilização Envio de arquivos RPS. Versão 2.1

C# - Conexão com MySQL

Consultar Dados de Conta

Manual de implementação da API SISeCommerce V Manual de implementação da API SISeCommerce V /21

Projeto SNGPC para Farmácias e Drogarias Conexão ao Webservice Manual do Desenvolvedor

JSP - ORIENTADO A OBJETOS

Manual XML. Versão: 1.1

e-stf WebServices Processo Eletrônico Smart Client Documentação

1. Tela de Acesso pg Cadastro pg Abas de navegação pg Abas dados cadastrais pg Aba grupo de usuários pg.

Sistema de Registro de Contratos e Financiamentos

Buscando a praticidade na integração do seu sistema com o nosso, a Papo consultou desenvolvedores, pesquisou concorrentes e avaliou tecnologias, para

Adenda Técnica :: LCPA :: Manual Técnico XML

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

Desenvolvimento Web com Framework Demoiselle versão 1.0

PLATAFORMA PAGADOR AUTORIZAÇÃO, CANCELAMENTO E CAPTURA.

Programação Web com PHP. Prof. Wylliams Barbosa Santos Optativa IV Projetos de Sistemas Web

Projeto SNGPC para Farmácias e Drogarias

Guia rápido de uso da interface beta do NFS-e Easy para operação com Sistemas WebISS

Nota Fiscal Paulista. Manual para Envio de Arquivo de Cupons Fiscais via Webservice GOVERNO DO ESTADO DE SÃO PAULO

Manual do Usuário Sistema APR Web. Aprovação de Projeto Elétrico e Análise de Carga na Rede via Web

TOTVS Série 1 Varejo (Simples) - Módulo e-commerce

Nos sites de compras, a tecnologia 3D Secure oferecida pelas bandeiras Visa e Mastercard é identificada pelas logos:

Sistema de Prestação de Contas Siprec

Manual do Usuário Sistema APR Web. Aprovação de Projeto Elétrico e Análise de Carga na Rede via Web

1 - Entrando no Sistema

SAIBA COMO ACESSAR O PORTAL DE SERVIÇOS DA CARTÃO BRB

Implantação do Selo de Fiscalização Eletrônico em Minas Gerais. Manual Técnico de Informática Versão 1.4

PREFEITURA DO MUNICÍPIO DE OSASCO MANUAL PARA EMISSÃO DE NFS-E EM TEMPO REAL VIA WEBSERVICE

MANUAL DE IMPLEMENTAÇÃO DO MÓDULO NOTA FISCAL ELETRONICA

Tutorial de Integração PYTHON

Histórico de Revisão Data Versão Descrição Autor

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Projeto SNGPC para Farmácias e Drogarias Conexão ao Webservice Manual do desenvolvedor

SISCOAF Sistema de Controle de Atividades Financeiras. Cadastro e Habilitação Declaração de Inocorrência

Documentação do retorno XML referente projeto Busca Endereço por CEP

Restart Informática Ltda. Equipe de Suporte [E-CAFI] Manual da equipe de Suporte. Proibida a reprodução e distribuição não autorizada.

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

MANUAL DE ORIENTAÇÕES GERAIS

ÍNDICE 1. SEJA BEM-VINDO... 2 SOBRE O SISTEMA FUNCIONALIDADES DO SISTEMA... 4

O sistema possui 5 módulos para registros:

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br Escola CDI de Videira

Cenários do CEL. Acessar ao sistema

P á g i n a 1. SISCOAF Sistema de Controle de Atividades Financeiras. Manual Operacional

Aula 06 Usando controles em ASP.NET

English Português. By erickalves 25 Julho, :08. Devido à política (#) de segurança. Encontrar Blogs Crie o seu blog de graça Ganhe prêmios

Tutorial para emissão de NF-e

Calculador de preços e prazos de encomendas

nddcargo Integração XML Layout Operação de Pagamento

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart.

Sistema de de Bilhetagem Eletrônica MANUAL MÓDULO PDV

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

2 echo "PHP e outros.";

Programação para a Internet II PHP AJAX. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

PROCESSO JUDICIAL ELETRÔNICO PJe

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca

ESPECIFICAÇÃO TÉCNICA CIELO MOBILE CAIXA RÁPIDO. Julho de 2015

Validando dados de páginas WEB

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

Manual de Implantação do WebService de Aposentadoria, Pensão e Retificações.

Manual de Distribuição Processual Eletrônica

SIGA Sistema de Gestão de Almoxarifado

Sistema de Cancelamento Eletrônico Manual do Usuário

Programando em PHP. Conceitos Básicos

Introdução ao PHP. Prof. Késsia Marchi

Especificação do Caso de Uso. Manter Cliente. Versão 1.0

Transcrição:

1

Histórico de Revisões Data Versão Responsável Histórico 16/03/2012 1.0 Robson M. Matos Elaboração da documentação técnica 24/10/2014 2.0 Robson M. Matos Atualização da documentação técnica 2

Histórico de Revisões 1 1. Definição e Escopo 5 2. Requisitos de Segurança 6 3. Métodos 7 3.1. Descrição geral dos métodos 7 3.2. Descrição explicativa dos métodos 7 3.3. Descrição geral dos parâmetros dos métodos 8 3.3.1. pauth 8 3.3.2. puserdata 8 3.3.3. pxml 8 3.3.4. ppesquisa 8 3.3.5. presposta 8 3.4. Descrição explicativa dos valores de saídas dos métodos 9 3.4.1. Retorno Padrão 9 3.4.2. retornoconnect 9 3.4.3. retornochallenge 9 3.4.4. retornouserdata 9 3.4.5. retornoxml 10 3.4.6. retornopesquisa 10 3.4.7. retornorespondeindisponibilidade 10 4. Definição de Regras e Serviços (em PHP) 11 4.1. Considerações 11 4.2. URL do WebService 11 4.3. Instanciando o WebService 11 4.4. Método: challenge_generator 11 4.5. Chamando o script de autenticação 12 4.6. Método: auth - processo de autenticação 12 4.7. Método: get_user_data 13 4.8. Método: get_xml 13 4.9. Método: Responde Indisponibilidade 14 3

4.10. Método: pesquisa 14 5. Definição de Regras e Serviços (em C#) 15 5.1. Instanciando o WebService 15 5.2. Método: challenge_generator 15 5.3. Método: auth 16 5.4. Método: get_user_data 16 5.5. Método: get_xml 17 5.6. Método: responde_indisponibilidade 17 5.7. Método: pesquisa 18 6. Exemplos do Formato dos XMLs 19 6.1. XML do método get_xml 20 6.2. XML do método responde_indisponibilidade 21 6.3. XSD de validação do XML de retorno do get_xml 22 4

1. Definição e Escopo O presente documento visa especificar a implementação do WebService da Central Nacional de Indisponibilidade de Bens, bem como seu funcionamento. Este documento trará exemplos em PHP, no capítulo 4 e C#, no capítulo 5. 5

2. Requisitos de Segurança O modelo de segurança consiste na autenticação via certificado digital, com o WebService gerando um desafio e, com este desafio mais os dados de autenticação do usuário, o Java Applet gera uma assinatura e um certificado, que são enviados novamente pelo WebService, juntamente com o token de acesso do Registrador de Imóveis, para autenticação do usuário. 6

3. Métodos Aqui veremos todos os métodos do WebService e suas descrições. Os parâmetros dos métodos são objetos com propriedades descritas em Descrição geral dos parâmetros dos métodos. 3.1. Descrição geral dos métodos auth (pauth AS auth) AS retornoconnect challenge_generator () AS retornochallenge get_user_data (puserdata as get_user_data) AS retornouserdata get_xml (pxml as get_xml) AS retornoxml pesquisa (ppesquisa AS pesquisa) AS retornopesquisa responde_indisponibilidade (presposta as responde_indisponibilidade) AS retornorespondeindisponibilidade 3.2. Descrição explicativa dos métodos auth: Objetivo: Autenticar o usuário no sistema utilizando certificado digital; challenge_generator: Gerar um desafio para utilizar na autenticação; get_user_data: Pegar os dados do usuário autenticado; get_xml: Pegar XML com ordens de indisponibilidade; pesquisa: Pesquisar documentos (CPF, CNPJ) indisponibilizados responde_indisponibilidade: Responde ordens de indisponibilidade com documentos e matrículas. 7

3.3. Descrição geral dos parâmetros dos métodos 3.3.1. pauth challenge: String Desafio gerado pelo WebService para autenticação; signature: String Assinatura do challenge gerada pelo Java Applet após escolha do certificado; certificate: String Certificado digital do usuário; token: String Token de acesso único para o Registrador de Imóveis que deverá ser utilizado na autenticação. 3.3.2. puserdata session_id: String ID de sessão entregue pelo WebService após a autenticação. 3.3.3. pxml session_id: String ID de sessão entregue pelo WebService após a autenticação; visualizado: String sim nao all (opcional - padrão "nao") Apenas visualizados, Apenas não visualizados, Todos os protocolos; data_inicial: String dd/mm/aaaa (opcional) Data inicial de aprovação das ordens para filtrar; data_final: String dd/mm/aaaa (opcional) Data final de aprovaçãoo das ordens para filtrar; 3.3.4. ppesquisa session_id: String ID de sessão entregue pelo WebService após a autenticação; documento: String CPF ou CNPJ desejado. 3.3.5. presposta session_id: String ID de sessão entregue pelo WebService após a autenticação; xml_content: String Conteúdo do XML contendo as matrículas no formato mais adiante. 8

3.4. Descrição explicativa dos valores de saídas dos métodos 3.4.1. Retorno Padrão Todas as requisições retornam um objeto "retorno" com duas propriedades, a propriedade "info" retorna uma propriedade denominada faultmessage, do tipo String, que poderá vir em branco. retorno.success = Boolean; // sucesso ou não da requisição retorno.info = Object; // dados da resposta retorno.info.faultmessage = String; // mensagem de erro Daqui para frente trataremos apenas o objeto propriedade info. 3.4.2. retornoconnect info.session_id = String; // id de sessão que será utilizado em todo o sistema. 3.4.3. retornochallenge info.challenge = String; // desafio que será gerado na autenticação. 3.4.4. retornouserdata info.user_data = Object; // objeto com os dados do usuário info.user_data.id_usuario = Integer; // id do usuário info.user_data.nome = String; // nome do usuário info.user_data.rg = String; // RG do usuário info.user_data.cpf = String; // CPF do usuário info.user_data.email = String; // Email do usuário info.user_data.instituicao = String; // Instituição que o usuário está autenticado info.user_data.data_cadastro = String; // Data de cadastro do usuário info.user_data.cargo = String; // Cargo do usuário info.user_data.tipo_usuario = String; // Tipo de Usuário info.user_data.ultimo_acesso = String; // Data e Hora do último acesso do usuário ao sistema 9

3.4.5. retornoxml info.xml_content = String; // Conteúdo de XML com as ordens de indisponibilidade e cancelamentos 3.4.6. retornopesquisa info.documento = Object; // Objeto de retorno do documento pesquisado info.documento.documento = String; // documento pesquisado (CPF, CNPJ) info.documento.protocolos = Array; // lista de protocolos que este documento está indisponibilizado info.documento.mensagem = String; // Mensagem de retorno sobre o documento info.hash = String; // Hash da pesquisa contendo 40 caracteres hexadecimais 3.4.7. retornorespondeindisponibilidade info.successmessage = String; // Mensagem de sucesso. info.matriculas = Array; // lista de matrículas enviadas info.matriculas[].documento = String; // documento (CPF, CNPJ) info.matriculas[].matricula = String; // número da matrícula info.matriculas[].protocolo = String; // protocolo da ordem de indisponibilidade info.matriculas[].status = String; // Status da Indisponibilidade 10

4. Definição de Regras e Serviços (em PHP) 4.1. Considerações 1. Todo método retorna um objeto nomeado retorno com os dados da requisição; 2. O objeto retorno possui a propriedade success, no formato booleano, que informa se a requisição ao método obteve sucesso, ou não; 3. O objeto retorno possui um sub-objeto nomeado info onde tem as propriedades com os dados solicitados, como a propriedade session_id, para o método auth e a propriedade user_data para o método get_user_data, dentre outras; 4. O sub-objeto info do retorno de todos os métodos possui uma propriedade chamada faultmessage, do tipo String, que será preenchida com a mensagem de erro caso a propriedade success do objeto retorno seja false. 4.2. URL do WebService A URL abaixo deverá ser usada para conexão com o WebService. http://www.indisponibilidade.org.br/wsdl/ Daqui para frente, nos referiremos a ela por $url. 4.3. Instanciando o WebService Aqui você vai ver como deve ser instanciado o WebService <?php $serv = new SoapClient("$url");?> 4.4. Método: challenge_generator Aqui veremos como gerar um desafio para ser utilizado na autenticação por certificado digital.a <?php $serv = new SoapClient("$url"); $challenge = $serv->challenge_generator()->retorno->info->challenge;?> 11

4.5. Chamando o script de autenticação Veremos agora como deve ser chamado o Java Applet para autenticação com o certificado digital. <script src="https://www.indisponibilidade.org.br/icp/bravo.php>"></script> <script> arispbravo.carrega({ authurl: targeturl, challenge: "<?php echo $challenge;?>", showbox: showboxcontent, callback: function() { // conteúdo para callback ); </script> authurl: URL que receberá o POST com as informações para autenticação. challenge: O desafio gerado no passo anterior showbox: Uma linha de código ou a instancia de um objeto do HTML para servir de gatilho para o autenticador callback: função que será executada após carregar o Java Applet, por exemplo, pode mandar exibir o showbox caso esteja oculto. 4.6. Método: auth - processo de autenticação Nesta parte veremos como deve ser feita a autenticação utilizado os valores enviados pelo processo acima. <?php $serv = new SoapClient("$url"); $auth = array( "challenge" => $_POST["challenge"], "signature" => $_POST["signature"], "certificate" => $_POST["certificate"], "token" => "LilH4NDK9NY93d/zHbhdDv2+VOkv/tzIwjRY44YeIijvmeKVaJjvKmfO9xfQO+BktEo5+RfElgkQ/ Uy87YV4XDWE0EutmhQzmgoj2/SckWBirIPMFRk6MRkzpF3opLvicxcLpn3YI7zspf0K/ di8atfctgq6dgqs5tduojyjstxvebbg9a7vhh0irdulhs26" ); $conn = $serv->auth($auth)->retorno; if ($conn->sucess) { $session_id = $conn->info->session_id; else { echo $conn->info->faultmessage;?> 12

4.7. Método: get_user_data Veremos agora o primeiro método do WebService que necessita estar autenticado. Daqui para frente, todos os métodos necessitarão do session_id, retornado no processo de autenticação. <?php $serv = new SoapClient("$url"); $get_user_data = array ( "session_id" => $session_id ); $retorno = $serv->get_user_data($get_user_data)->retorno; if ($retorno->success) { print_r($retorno->info->user_data); else { echo $auth->info->faultmessage;?> 4.8. Método: get_xml Este método pega um XML com as ordens feitas no sistema devidamente aprovadas por um Magistrado. Existem 4 tipos de ordens: 1. Ordem de Indisponibilidade 2. Ordem de Cancelamento Total 3. Ordem de Cancelamento de Pessoa 4. Ordem de Cancelamento de Imóvel <?php $serv = new SoapClient("$url"); $get_xml = array ( "session_id" => $session_id, "visualizado" => "sim", "data_inicial" => "10/10/2014", "data_final" => "24/10/2014" ); $retorno = $serv->get_xml($get_xml)->retorno; if ($retorno->success) { echo $retorno->info->xml_content; else { echo $auth->info->faultmessage;?> Para pegar o XML você pode usar diferentes combinações de filtros, lembrando que os parâmetros, com excessão do session_id, são todos opcionais. No exemplo acima, buscamos um XML com apenas protocolos já visualizados, data inicial 10/10/2014 e data final 24/10/2014. 13

4.9. Método: Responde Indisponibilidade Veremos agora como enviar uma resposta para um ou mais documentos dentro das ordens de indisponibilidade. Para responder a indisponibilidade, deve ser enviado um XML contendo: Protocolo da Ordem de Indisponibilidade Documento (CPF/CNPJ) da pessoa indisponibilizada; Número de matrícula do imóvel desta pessoa junto ao Registrador de Imóveis. <?php $serv = new SoapClient("$url"); $responde_indisponibilidade = array ( "session_id" => $session_id, "xml_content" => ' <?xml version="1.0" encoding="utf-8"?> <MATRICULAS> <REGISTRO> <NUMEROPROTOCOLO>201306.0516.00999594-IA-660</NUMEROPROTOCOLO> <DOCUMENTO>01.234.567/0001-89</DOCUMENTO> <MATRICULA>10001</MATRICULA> </REGISTRO> <REGISTRO> <NUMEROPROTOCOLO>201306.0516.00999594-IA-660</NUMEROPROTOCOLO> <DOCUMENTO>01.234.567/0001-89</DOCUMENTO> <MATRICULA>10003</MATRICULA> </REGISTRO> </MATRICULAS> ' ); $retorno = $serv->responde_indisponibilidade($responde_indisponibilidade)->retorno; if ($retorno->success) { print_r($retorno->info->matriculas); else { echo $auth->info->faultmessage;?> 4.10. Método: pesquisa Agora iremos pesquisar se uma determinada pessoa está indisponibilizada, ou não. <?php $serv = new SoapClient("$url"); $pesquisa = array ( "session_id" => $session_id, "documento" => '12345678901' ); $retorno = $serv->pesquisa($pesquisa)->retorno; if ($retorno->success) { print_r($retorno->info->documento); echo $retorno->info->hash; else { echo $auth->info->faultmessage;?> 14

5. Definição de Regras e Serviços (em C#) Agora iremos ver os mesmos exemplos acima, só que utilizando C#. 5.1. Instanciando o WebService Após declarar o WSDL no C#, nomeando de CNI, vamos criar uma instancia do WebService. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { cni.serv serv = new cni.serv(); 5.2. Método: challenge_generator using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { cni.serv serv = new cni.serv(); string challenge = serv.challenge_generator().retorno.info.challenge; 15

5.3. Método: auth using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { cni.serv serv = new cni.serv(); cni.auth auth = new cni.auth(); var html = HttpContext.Current; auth.challenge = html.request.form["token"] = "LilH4NDK9NY93d/zHbhdDv2+VOkv/ tziwjry44yeiijvmekvajjvkmfo9xfqo+bkteo5+rfelgkq/uy87yv4xdwe0eutmhqzmgoj2/ SckWBirIPMFRk6MRkzpF3opLvicxcLpn3YI7zspf0K/di8AtFCtGq6dgQs5tdUOjyjsTxvEBBG9A7Vhh0IRdULHs26"; auth.challenge = html.request.form["challenge"]; auth.signature = html.request.form["signature"]; auth.certificate = html.request.form["certificate"]; var retorno = serv.auth(auth).retorno; if (retorno.success) { string session_id = retorno.info.session_id; else { Response.Write(retorno.info.faultMessage); 5.4. Método: get_user_data using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string session_id = ""; cni.serv serv = new cni.serv(); cni.get_user_data gudvars = new cni.get_user_data(); gudvars.session_id = session_id; var retorno = serv.get_user_data(gudvars).retorno; if (retorno.success) { var user_data = retorno.info.user_data; else { Response.Write(retorno.info.faultMessage); 16

5.5. Método: get_xml using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string session_id = ""; cni.serv serv = new cni.serv(); cni.get_xml gxvars = new cni.get_xml(); gxvars.session_id = session_id; gxvars.visualizado = "sim"; gxvars.data_inicial = "10/10/2014"; gxvars.data_final = "20/10/2014"; var retorno = serv.get_xml(gxvars).retorno; if (retorno.success) { Response.Write(retorno.info.xml_content); else { Response.Write(retorno.info.faultMessage); 5.6. Método: responde_indisponibilidade using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string session_id = ""; cni.serv serv = new cni.serv(); cni.get_xml gxvars = new cni.get_xml(); gxvars.session_id = session_id; gxvars.visualizado = "sim"; gxvars.data_inicial = "10/10/2014"; gxvars.data_final = "20/10/2014"; var retorno = serv.get_xml(gxvars).retorno; if (retorno.success) { Response.Write(retorno.info.xml_content); else { Response.Write(retorno.info.faultMessage); 17

5.7. Método: pesquisa 10/24/14 04:11:42 Untitled using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string session_id = ""; cni.serv serv = new cni.serv(); cni.pesquisa pesqvars = new cni.pesquisa(); pesqvars.session_id = session_id; pesqvars.documento = "12345678901"; var retorno = serv.pesquisa(pesqvars).retorno; if (retorno.success) { var documentos = retorno.info.documentos; var hash = retorno.info.hash; else { Response.Write(retorno.info.faultMessage); 18

6. Exemplos do Formato dos XMLs Aqui veremos exemplos dos formatos dos dois XMLs usados por este WebService: XML de retorno do método get_xml XML enviado no método responde_indisponibilidade 19

6.1. XML do método get_xml <?xml version="1.0" encoding="utf-8"?> <PEDIDO xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="https://www.indisponibilidade.org.br/xml/xsd"> <REGISTRO> <!-- código do protocolo da ordem de indisponibilidade - varchar(35) --> <PROTOCOLOINDISPONIBILIDADE>201104.2619.00000344-IA-520</PROTOCOLOINDISPONIBILIDADE> <DATAPEDIDO>26/04/2011 19:21</DATAPEDIDO><!-- data aprovação - datetime --> <NUMERODOPROCESSO>0000002</NUMERODOPROCESSO><!-- número do processo - varchar(70) --> <TELEFONE>11-22334455</TELEFONE><!-- número telefone - varchar(15) --> <!-- nome da instituição - varchar(250) --> <NOMEINSTITUICAO>TJSP - Tribunal de Justiça do Estado de São Paulo</NOMEINSTITUICAO> <!-- forum/vara - varchar(250) --> <FORUMVARA>Sp - Capital -> 1a oficio - OFICIO RECUPERAÇÕES JUDICIAIS</FORUMVARA> <USUARIO>JOAO DA SILVA</USUARIO><!-- nome do usuário - varchar(250) --> <EMAIL>joao@silva.com</EMAIL><!-- email do usuário - varchar(250) --> <INDISPONIBILIDADE> <INDIVIDUO> <NOME>Fulano</NOME><!-- nome da pessoa indisponibilizada - varchar(250) --> <CPFCNPJ>876.211.652-51</CPFCNPJ><!-- documento da pessoa - varchar(22) --> <IMOVEIS> <MATRICULA>1234</MATRICULA><!-- número de matrícula - varchar(50) --> <MATRICULA>12342</MATRICULA> </IMOVEIS> </INDIVIDUO> <INDIVIDUO> <NOME>Fulano</NOME> <CPFCNPJ>876.211.652-51</CPFCNPJ> </INDIVIDUO> </INDISPONIBILIDADE> </REGISTRO> <REGISTRO> <!-- código do protocolo da ordem de cancelamento - varchar(35) --> <CANCELAMENTODEINDISPONIBILIDADE>201109.0915.00000360-TA-070</ CANCELAMENTODEINDISPONIBILIDADE> <!-- tipo de cancelamento - int(1) - 1 = total; 2 = pessoa; 3 = matrícula --> <CANCELAMENTO_TIPO>1</CANCELAMENTO_TIPO> <!-- data aprovação - ordem cancelamento - datetime --> <CANCELAMENTO_DATA>09/09/2011 14:21</CANCELAMENTO_DATA> <!-- código do protocolo da ordem de indisponibilidade - varchar(35) --> <PROTOCOLOINDISPONIBILIDADE>201109.0915.00000358-IA-920</PROTOCOLOINDISPONIBILIDADE> <!-- data aprovação - ordem indisponibilidade - datetime --> <DATAPEDIDO>09/09/2011 15:17</DATAPEDIDO> <NUMERODOPROCESSO>123456789</NUMERODOPROCESSO> <TELEFONE>11-22334455</TELEFONE> <NOMEINSTITUICAO>TJSP - Tribunal de Justiça do Estado de São Paulo</NOMEINSTITUICAO> <FORUMVARA>Sp - Capital -> 1a oficio - OFICIO RECUPERAÇÕES JUDICIAIS</FORUMVARA> <USUARIO>JOAO DA SILVA</USUARIO> <EMAIL>joal@silva.com</EMAIL> <CANCELAMENTO> <INDIVIDUO> <NOME>PANIFICADÔRA SUPIMPA</NOME> <CPFCNPJ>89.256.562/3341-50</CPFCNPJ> </INDIVIDUO> </CANCELAMENTO> </REGISTRO> </PEDIDO> 20

6.2. XML do método responde_indisponibilidade <?xml version="1.0" encoding="utf-8"?> <MATRICULAS> <REGISTRO> <!-- código do protocolo da ordem de indisponibilidade - varchar(35) --> <NUMEROPROTOCOLO>201306.0516.00010594-IA-660</NUMEROPROTOCOLO> <!-- documento da pessoa - varchar(22) --> <DOCUMENTO>02.355.376/0001-44</DOCUMENTO> <!-- número de matrícula - varchar(50) --> <MATRICULA>10001</MATRICULA> </REGISTRO> <REGISTRO> <NUMEROPROTOCOLO>201306.0516.00010594-IA-660</NUMEROPROTOCOLO> <DOCUMENTO>02.355.376/0001-44</DOCUMENTO> <MATRICULA>10003</MATRICULA> </REGISTRO> </MATRICULAS> 21

6.3. XSD de validação do XML de retorno do get_xml <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:complextype name="pessoas"> <xs:sequence> <xs:element name="individuo" maxoccurs="unbounded" minoccurs="1"> <xs:complextype> <xs:sequence> <xs:element name="nome"> <xs:maxlength value="250" /> <xs:element name="cpfcnpj"> <xs:maxlength value="35" /> <xs:element name="imoveis" minoccurs="0" maxoccurs="1"> <xs:complextype> <xs:sequence> <xs:element name="matricula" minoccurs="0" maxoccurs="unbounded"> <xs:maxlength value="250" /> </xs:sequence> </xs:complextype> </xs:sequence> </xs:complextype> </xs:sequence> </xs:complextype> 22

<xs:element name="pedido"> <xs:complextype> <xs:sequence> <xs:element name="registro" maxoccurs="unbounded" minoccurs="1"> <xs:complextype> <xs:sequence> <xs:element name="cancelamentodeindisponibilidade" minoccurs="0" maxoccurs="1"> <xs:length value="27" /> <xs:element name="cancelamento_tipo" minoccurs="0" maxoccurs="1"> <xs:restriction base="xs:integer"> <xs:mininclusive value="1"/> <xs:maxinclusive value="3"/> <xs:element name="cancelamento_data" minoccurs="0" maxoccurs="1"> <!-- expressão regular para o formato "DD/MM/AAAA hh:mm:ss"--> <xs:pattern value="(0[1-9] [12][0-9] 3[01])/(0[1-9] 1[012])/ 20[0-9]{2 ([01][0-9] 2[0-3])(:([0-5][0-9])){2" /> <xs:length value="19" /> <xs:element name="protocoloindisponibilidade"> <xs:length value="27" /> <xs:element name="datapedido"> <!-- expressão regular para o formato "DD/MM/AAAA hh:mm:ss"--> <xs:pattern value="(0[1-9] [12][0-9] 3[01])/(0[1-9] 1[012])/ 20[0-9]{2 ([01][0-9] 2[0-3])(:([0-5][0-9])){2" /> <xs:length value="19" /> <xs:element name="numerodoprocesso"> <xs:maxlength value="250" /> 23

<xs:element name="telefone"> <xs:maxlength value="15" /> <xs:element name="nomeinstituicao"> <xs:maxlength value="250" /> <xs:element name="forumvara"> <xs:maxlength value="250" /> <xs:element name="usuario"> <xs:maxlength value="250" /> <xs:element name="email"> <xs:maxlength value="250" /> <xs:element name="indisponibilidade" type="pessoas" minoccurs="0" maxoccurs="1" /> <xs:element name="cancelamento" type="pessoas" minoccurs="0" maxoccurs="1" /> <xs:element name="hashvisualizacao" minoccurs="0" maxoccurs="1"> <xs:length value="49" /> </xs:sequence> </xs:complextype> </xs:sequence> </xs:complextype> </xs:schema> 24