Tag: java

  • Ninguém Liga para Alertas

    Ninguém Liga para Alertas

    Transcrição:

    Tela de Computador: humanidade.jar

    Alerta: Potenciais problemas na programação (12.575 itens). Deseja compilar assim mesmo? Sim ou Não?

    Deus: Tudo bem, é só uma alerta. Dá nada não.

    Sim.

  • Beta do JetBrains faz Apps Kotlin Funcionar sem JVM

    Beta do JetBrains faz Apps Kotlin Funcionar sem JVM

    JetBrains disponibilizou a tecnologia Kotlin/Native, que cria binários nativos de um código Kotlin, de forma não ser necessária uma máquina virtual Java para rodar.

    A versão beta da IDE CLion permite que programas Kotlin sejam compilados diretamente em um formato a ser executado de forma nativa pelo sistema operacional.

    Kotlin/Natives usa um compilador LLVM (Low Level Virtual Machine) para gerar o código. Um LLVM back-end, rodado em tempo de execução e parte do gerador de códigos nativos são fornecidos como parte do beta do CLion.

    Com notícias do JavaWorld e InfoWorld

  • Próxima Versão do Java (JDK 10) Deverá Lançada em 2018

    Próxima Versão do Java (JDK 10) Deverá Lançada em 2018

    Os desenvolvedores acabaram de receber a atualização do JDK 9, em Setembro do ano passado. Porém, a Oracle já anunciou que a versão 10 está lançada para lançamento em 2018. Ainda em 2017, a Oracle declarou planos para que hajam lançamentos de novas versões Java a cada seis meses.

    Dentre as diversas atualizações, os principais recursos incluem melhorias importantes no coletor de lixo, melhor controle de memória, novos tipos de variáveis locais, um novo compilador experimental just-in-time (experimental para plataforma Linux x64), melhorias para CA e handshake que tendem a facilitar o uso com webservices, dentre outras.

    Se você é desenvolvedor Java, já pode baixar a versão Beta para testar sua aplicação.

    Com notícias do JavaWorld e Oracle

  • Como Preencher Dados da Empresa pelo CNPJ Dinamicamente (com PHP ou Java)

    Como Preencher Dados da Empresa pelo CNPJ Dinamicamente (com PHP ou Java)

    Dentro do design de interação, a automação de dados é importante para agilizar cadastros, além de garantir uma maior segurança dessas informações. Preencher dinamicamente o máximo de campos possível é sempre uma opção interessante para otimizar processos e manter um ambiente ágil.

    Uma das formas mais utilizadas é o preenchimento automático de endereço a partir do CEP (clique aqui, caso queira saber como fazer). Porém, uma outra alternativa muito interessante, e sempre procurada, é o preenchimento dinâmico dos dados de uma empresa a partir do CNPJ.

    Para isso, há uma API pública bem interessante de uma organização chamada ReceitaWS, que é uma empresa destinada a fornecer dados de pessoas jurídicas a partir da Receita Federal. Sua API pública é bem funcional e garante uma quantidade enorme de CNPJs atualizados. O ReceitaWS também possui uma API comercial para quem precisa de dados mais refinados e precisos.

    Obs. Só deixando claro que isto NÃO é um anúncio.

    Conectando com o ReceitaWS

    A API do ReceitaWS aconselha o acesso via cURL. Falando de forma simples, é como se o servidor fizesse o acesso a um site como se fosse um navegador. Por questões de segurança e para impedir o acúmulo de processos, muitas APIs bloqueiam o acesso direto. Por isso a comunicação não pode ser feita apenas com a URL.

    Apesar de ser possível fazer acesso cURL em praticamente qualquer linguagem, vamos usar PHP (atualização: ou Java) no nosso exemplo, por você poder usar em praticamente qualquer hospedagem.

    Esse acesso deverá ser feito para a URL: https://www.receitaws.com.br/v1/cnpj/[cnpj], onde [cnpj] corresponde ao número do CNPJ que você irá consultar.

    Para iniciar, devemos criar um arquivo onde vai ser carregado os dados e impresso o retorno.

    cnpj.php

    É extremamente importante que o nosso arquivo possua um cabeçalho que imprima como text/plain. Isso porque teremos uma resposta em jSon e passar este cabeçalho irá garantir a leitura correta dos dados.

    header("Content-Type: text/plain");

    Em seguida, devemos capturar o CNPJ enviado pela requisição e guardar em uma variável.

    $cnpj = $_REQUEST["cnpj"];

    Agora começa a parte interessante. Iremos usar o método cURL do PHP para poder acessar a URL e passar o CNPJ. Leias os comentários para entender seu funcionamento.

    $ch = curl_init(); //Inicializa
    curl_setopt($ch, CURLOPT_URL, "https://www.receitaws.com.br/v1/cnpj/".$cnpj); //Acessa a URL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Permite a captura do Retorno
    $retorno = curl_exec($ch); //Executa o cURL e guarda o Retorno em uma variável
    curl_close($ch); //Encerra a conexão
    

    Por fim, devemos terminar com a impressão do retorno.
    Para o retorno poder ser lido de forma simples, mesmo que por um humano, iremos usar o JSON_PRETTY_PRINT. Para isso, temos que converter a String de retorno usando o método Json Decode, em seguida imprimindo o resultado com o JSON_PRETTY_PRINT.

    $retorno = json_decode($retorno); //Ajuda a ser lido mais rapidamente
    echo json_encode($retorno, JSON_PRETTY_PRINT);
    

    O código completo ficará:

    <?php
    //Garantir que seja lido sem problemas
    header("Content-Type: text/plain");
    
    //Capturar CNPJ
    $cnpj = $_REQUEST["cnpj"];
    
    //Criando Comunicação cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://www.receitaws.com.br/v1/cnpj/".$cnpj);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //Descomente esta linha apenas se você não usar HTTPS, ou se estiver testando localmente
    $retorno = curl_exec($ch);
    curl_close($ch);
    
    $retorno = json_decode($retorno); //Ajuda a ser lido mais rapidamente
    echo json_encode($retorno, JSON_PRETTY_PRINT);
    
    ?>

    Se quiser testar, basta acessar o seu arquivo php pelo navegador, por exemplo:
    seusite.com/pasta/cnpj.php?cnpj=XXXXXXXXXXXXX

    Atualização (Java):

    Você também pode fazer com Java. O exemplo abaixo é uma forma bem simples de fazer.

    <%@ page contentType="text/plain; charset=utf-8" language="java" errorPage="" %>
    <%@page import="java.io.*"%>
    <%@page import="java.net.URL"%>
    <%
    URL url = new URL("https://www.receitaws.com.br/v1/cnpj/"+request.getParameter("cnpj"));
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {
     for (String line; (line = reader.readLine()) != null;) {
     out.println(line);
     }
    }
    %>

    Evitando acessos externos

    Por segurança, precisamos evitar que outros sites acessem o nosso json. Isso para evitar que o servidor caia devido a diversas requisições de fontes desconhecidas. A forma mais simples de fazer isso, e compatível com praticamente qualquer hospedagem / servidor, é através do arquivo .htaccess.

    Na mesma pasta onde foi criado o arquiv cnpj.php deve ser criado um arquivo chamado:

    .htaccess

    Nesse arquivo deve conter as seguintes informações:

    #Evitar Acesso Externo
    Order Deny,Allow
    Deny from all
    Allow from 127. #localhost

    Basicamente, o que está sendo dito é que nenhum servidor pode acessar o conteúdo desta pasta, exceto o localhost (127.0.0.1). Caso você queira adicionar mais algum IP autorizado, basta adicionar o IP ou domínio do endereço que deseja.

    ATENÇÃO: Caso você seja usuário Cloudflare, adicone os seguintes IPs em sua lista de permissões do .htaccess:

    Allow from 199.27.128.0/21
    Allow from 173.245.48.0/20
    Allow from 103.21.244.0/22
    Allow from 103.22.200.0/22
    Allow from 103.31.4.0/22
    Allow from 141.101.64.0/18
    Allow from 108.162.192.0/18
    Allow from 190.93.240.0/20
    Allow from 188.114.96.0/20
    Allow from 197.234.240.0/22
    Allow from 198.41.128.0/17
    Allow from 162.158.0.0/15
    Allow from 104.16.0.0/12
    Allow from 172.64.0.0/13

    Atualização (Java):

    Caso você use o Java, a forma de configurar as permissões de acesso irá variar de acordo com o servidor que você utilizar.

    Caso você utilize o Tomcat, você deve utilizar o CORS para fazer esse controle de permissão.

    Para isso, edite o arquivo web.xml, e procure pelo filtro do CORS. O bloco deverá ficar algo semelhante ao código abaixo, segundo a mesma lógica do exemplo acima, do PHP:

    <filter>
        <filter-name>CORS</filter-name>
        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
        <init-param>
         <param-name>cors.allowOrigin</param-name>
            <param-value>127.0.0.1</param-value>
        </init-param>
        <init-param>
         <param-name>cors.supportedMethods</param-name>
            <param-value>GET, POST, HEAD, PUT, DELETE</param-value>
        </init-param>
        <init-param>
           <param-name>cors.supportedHeaders</param-name>
           <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
        </init-param>
        <init-param>
            <param-name>cors.exposedHeaders</param-name>
            <param-value>Set-Cookie</param-value>
        </init-param>
        <init-param>
            <param-name>cors.supportsCredentials</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    OBS. O uso do CORS pode dar problemas com clientes que façam acesso por cliente sem DNS, ou seja, com acesso que não é feito por conexão http ou https, como por exemplo,
    o Cordova/Phonegap. Nesse caso, aconselha-se simplesmente não usar o CORS, ou editar a bibliotca.

    Enviando o CNPJ e Imprimindo os Dados da Empresa

    Já para imprimir os dados e ler o json de retorno, precisamos usar um formulário HTML e um pouco de Javascript. Para poder facilitar a compreensão, usaremos o bom e velho jQuery, já explicado em conteúdos anteriores.

    A primeira coisa é criar o formulário que devemos usar.

    form.html

    <!--Importando Script Jquery-->
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    
    <!--Formulário-->
    <form id="post">
      <label for="cnpj">CNPJ</label>
      <input id="cnpj" required type="text">
      <br/>
      <label for="nome">Razão Social</label>
      <input id="nome" type="text">
      <br/>
      <label for="fantasia">Nome Fantasia</label>
      <input id="fantasia" type="text">
      <br/>
      <label for="atividade">Atividade Principal</label>
      <input id="atividade" type="text">
      <br/>
      <label for="telefone">Telefone</label>
      <input id="telefone" required type="text">
      <br/>
      <label for="email">E-mail</label>
      <input id="email" type="text">
      <br/>
      <label for="cep">CEP</label>
      <input id="cep" type="text">
      <br/>
      <label for="logradouro">Logradouro</label>
      <input id="logradouro" type="text">
      <br/>
      <label for="numero">Número</label>
      <input id="numero" type="text">
      <br/>
      <label for="complemento">Complemento</label>
      <input id="complemento" type="text">
      <br/>
      <label for="bairro">Bairro</label>
      <input id="bairro" type="text">
      <br/>
      <label for="uf">Estado</label>
      <select id="uf">
        <option value="AC">Acre</option>
        <option value="AL">Alagoas</option>
        <option value="AP">Amapá</option>
        <option value="AM">Amazonas</option>
        <option value="BA">Bahia</option>
        <option value="CE">Ceará</option>
        <option value="DF">Distrito Federal</option>
        <option value="ES">Espírito Santo</option>
        <option value="GO">Goiás</option>
        <option value="MA">Maranhão</option>
        <option value="MT">Mato Grosso</option>
        <option value="MS">Mato Grosso do Sul</option>
        <option value="MG">Minas Gerais</option>
        <option value="PA">Pará</option>
        <option value="PB">Paraíba</option>
        <option value="PR">Paraná</option>
        <option value="PE">Pernambuco</option>
        <option value="PI">Piauí</option>
        <option value="RJ">Rio de Janeiro</option>
        <option value="RN">Rio Grande do Norte</option>
        <option value="RS">Rio Grande do Sul</option>
        <option value="RO">Rondônia</option>
        <option value="RR">Roraima</option>
        <option value="SC">Santa Catarina</option>
        <option value="SP">São Paulo</option>
        <option value="SE">Sergipe</option>
        <option value="TO">Tocantins</option>
      </select>
    </form>
    

    Como iremos aplicar a consulta após o usuário deixar o campo CNPJ, deveremos adicionar a chamada no focusout do CNPJ, ficando

    <script type="text/javascript">
    	$("#cnpj").focusout(function(){
    	//Aqui vai o código		
    	});
    </script>

    Agora é bem simples. Basta usarmos o método Ajax, que já utilizamos em tutoriais anteriores para fazermos conexões. O código abaixo possui diversos comentários para facilitar o entendimento de cada bloco.

    <script type="text/javascript">
    	$("#cnpj").focusout(function(){
    		//Início do Comando AJAX
    		$.ajax({
    			//O campo URL diz o caminho de onde virá os dados
    			//É importante concatenar o valor digitado no CNPJ
    			url: '/pasta/cnpj.php?cnpj='+$("#cnpj").val(),
    //Atualização: caso use java, use cnpj.jsp, usando o outro exemplo.
    			//Aqui você deve preencher o tipo de dados que será lido,
    			//no caso, estamos lendo JSON.
    			dataType: 'json',
    			//SUCESS é referente a função que será executada caso
    			//ele consiga ler a fonte de dados com sucesso.
    			//O parâmetro dentro da função se refere ao nome da variável
    			//que você vai dar para ler esse objeto.
    			success: function(resposta){
    				//Confere se houve erro e o imprime
    				if(resposta.status == "ERROR"){
    					alert(resposta.message + "\nPor favor, digite os dados manualmente.");
    					$("#post #nome").focus().select();
    					return false;
    				}
    				//Agora basta definir os valores que você deseja preencher
    				//automaticamente nos campos acima.
    				$("#post #nome").val(resposta.nome);
    				$("#post #fantasia").val(resposta.fantasia);
    				$("#post #atividade").val(resposta.atividade_principal[0].text + " (" + resposta.atividade_principal[0].code + ")");
    				$("#post #telefone").val(resposta.telefone);
    				$("#post #email").val(resposta.email);
    				$("#post #logradouro").val(resposta.logradouro);
    				$("#post #complemento").val(resposta.complemento);
    				$("#post #bairro").val(resposta.bairro);
    				$("#post #cidade").val(resposta.municipio);
    				$("#post #uf").val(resposta.uf);
    				$("#post #cep").val(resposta.cep);
    				$("#post #numero").val(resposta.numero);
    			}
    		});
    	});
    </script>

    Que tal agora testarmos o funcionamento?

    Digite um CNPJ (apenas números) no campo CNPJ abaixo e depois saia dele (focusout), clicando em outro campo ou pressionando a tecla TAB de seu teclado.














     

     

    Baixe o exemplo no GitHub:
    Download
    É mais fácil do que parece, não é? Aproveite para compartilhar isso com seus amigos que estão estudando ou que essa informação possa ser útil 👍. Aproveite e deixe um like na nova página da Velhobit, no Facebook.