Jump to content
marcio pereira batista

configurar web server para escutar as requisições http

Recommended Posts

boa noite meus amigos, meu problema e o seguinte : 
preciso ler a informação que vem de uma catraca controlid, consigo fazer toda a comunicação com a catraca via restjson usando idttp indy, logo, libero acesso e etc, o problema esta quando preciso receber oque vem da catraca sem que eu solicite, ex : o usuario coloca a digital no equipamento e eu preciso que o webserver receba o json que vem da catraca via http, fiz todos os passos abaixo indicado pelo o suporte do fabricante e tudo correu bem e os comandos foram executados sem erro algum, porem quando coloca a digital na catraca o webserver que fiz usando idttpserver nao recebe nada no ip e porta expecifica vindo da catraca e se tento enviar algo pela rede no ip e porta do webserver ele responde perfeitamente, por favor se alguem puder me ajudar a terminar de configurar o webserver, acho q não falta muito e o cliente ja perdeu a paciencia..., segue oque foi feito de acordo com o fabricante : 

O fluxo é o seguinte: 

Realizar o login no equipamento para obter uma sessão; 
lJSO := SO('{"login": "admin", "password": "admin"}'); 
lResponse := IdHTTP1.Post('http://192.168.001.171/login.fcgi', lRequest); 

Criar um novo device que representará o servidor do equipamento. Referências: aqui e aqui (procurar 'devices'). Note que o campo 'public_key' deve ser qualquer texto em base64. Em Linux, pode-se gerar facilmente um através do comando: echo -n chave_secreta | base64 
lJSO := SO('{ object: "devices", values: [{id: 3333, name: "clube_server", ip: "192.168.1.100:8080", public_key:"Y2hhdmVfc2VjcmV0YQ=="}] })}'); 
lResponse := IdHTTP1.Post('http://192.168.001.171/create_objects.fcgi?session='+trim(edit1.text),lRequest); 


Modificar a configuração 'server_id' do objeto 'online_client' para o id do device cadastrado na etapa anterior. Exemplo : 
lJSO := SO('{ online_client: {server_id: "3333" } }'); 
lResponse := IdHTTP1.Post('http://192.168.001.171/set_configuration.fcgi?session='+trim(edit1.text),lRequest); 


Modificar a configuração 'online' do objeto 'general' para 1 
lJSO := SO('{ general: {online: "1"} }'); 
lResponse := IdHTTP1.Post('http://192.168.001.171/set_configuration.fcgi?session='+trim(edit1.text),lRequest); 

Habilita a identificação Local: 
lJSO := SO('{ general: {"local_identification": "1"} })}'); 

lResponse := IdHTTP1.Post('http://192.168.001.171/set_configuration.fcgi?session='+trim(edit1.text),lRequest); 

todos os campos são executados sem problema, segue mais explicações do fabricante : 

O Fluxo de comunicação entre o servidor (web server que escutará as requisições http que o equipamento para enviará, o verbo http é o POST) que você vai desenvolver e o equipamento é o seguinte: 


Primeiro um pouco de teoria para você entender o fluxo do endpoint que você precisará implementar: new_user_identified.fcgi (https://www.controlid.com.br/suporte/api_idaccess_latest.html#50_events) 


Usuário identificado 

CLIENT -> SERVER 

POST /new_user_identified.fcgi?session=gJgOHkblq69Vc3WLOOdUMvrf& HTTP/1.1 

Host: 192.168.2.121 

Accept: */* 

Content-Type: application/x-www-form-urlencoded 

Connection: Keep-Alive 

Content-Length: 105 


event=8&device_id=468507&identifier_id=1651076864&portal_id=1&user_id=1&user_name=Danilo&user_has_image=0 


SERVER -> CLIENT 

HTTP/1.1 200 OK 

Content-Type: application/json; charset=utf-8 

Transfer-Encoding: chunked 

Date: Thu, 18 Feb 2016 16:20:45 GMT 

Server: lighttpd/1.4.35 


{"result":{"event":6,"user_id":1,"user_name":"João","user_image":false,"portal_id":5,"actions":[]}} 



Usuário não identificado 

CLIENT -> SERVER 

POST /new_user_identified.fcgi?session=gJgOHkblq69Vc3WLOOdUMvrf& HTTP/1.1 

Host: 192.168.2.121 

Accept: */* 

Content-Type: application/x-www-form-urlencoded 

Connection: Keep-Alive 

Content-Length: 99 


event=3&device_id=468507&identifier_id=1651076864&portal_id=0&user_id=0&user_name=&user_has_image=0 


SERVER -> CLIENT 

HTTP/1.1 200 OK 

Content-Type: application/json; charset=utf-8 

Transfer-Encoding: chunked 

Date: Thu, 18 Feb 2016 16:22:57 GMT 

Server: lighttpd/1.4.35 


{"result":{"event":3}} 


no webser que criei configurei da seguinte forma : 

IdHTTPServer1.Active := false; 
IdHTTPServer1.defaultport:=8080; 
IdHTTPServer1.Active := True; 

no oncommandget coloquei o seguinte : 

if (ARequestInfo.URI = '/api/notification/dao') or (ARequestInfo.URI = '/api/notification/dao') then begin 
showmessage('eu to aqui'); 
end else begin 
showmessage('chequei aqui 2'); 
end; 


não coloquei nenhuma rotina de envio do retorno ainda pois estou tentando ver se esta chegando algo no ip/porta vindo da catraca e nao esta e se tento pela rede chega sem problema. 

desde ja agradeço a quem puder me ajudar

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Bobrinha
      Olá, estou com um probleminha e não estou achando uma solução amigável e agradeço desde de já qualquer ajuda.
       
      Bom ao usar o php com o file_get_contents e buscar a URL https://www.udemy.com/api-2.0/courses/2064455?fields[course]=title,headline,price ela me retorna o price ou seja o preço em dolar, no entanto se eu jogar essa URL no navegador diretamente ela retorna o valor em real.
       
      O mesmo acontece se eu jogar no jquery com ajax e puxar a url no meu pc e no servidor web o preço fica em dolar mais se jogar diretamente no navegador fica em real o valor 
       
      Alguém saberia por que? 
    • By George Rewrited
      $data = file_get_contents("https://servicodados.ibge.gov.br/api/v1/localidades/estados"); echo "<pre>"; print ($data); echo "</pre>"; este código está me retornando isso:
      ����N�@�_��5&*�;(�h�;��J'0 ̐i�h|㚝o�sP�9�%��]Ӝ����so�ޘLY����2�X����u��k��*-��$�ʈ�$���������䂽�w�s��N6��I�q�5�jE�'��O�|Cr�[|ϩ⁓�d�O�%T���x3��j���9�\*OK�A5��'dH-�O]�BV��7Y �����-v-�������Xs.�K�"�F*�T���_�i��F���d]�XE����M+!|����f�����������6>�8�r=�e͖l����D0.�.� vU���q��1�N8�6���\܎z���� L�����'%�i��hs�z�n� ���}��IyjT���$sĮ fs���-� �����m�
       
       
    • By guinigri
      Boa tarde, preciso passar o valor do frete exibido da API dos correios para o pag seguro mas não estou conseguindo!
      Exemplo:
       
      O cliente entra no meu site add um produto ao carrinho e verifica o frete no próprio carrinho, seleciona se quer PAC ou SEDEX, e quando apertar no botão de pagamento do Pagseguro, ele envia o valor do frete selecionado para a API do pagseguro
       
      Segue os Codigos:
       
      --> FORM DO FRETE COM RETORNO DO VALOR:

       
      <form method="post" action="#" class="navbar-form navbar-left" role="textbox" id="t1" name="t1">                          <div class="form-group">          Simular frete: <input type="text" class="form-control" name="frete" placeholder="Frete" required id="frete">             <input type="hidden" name="vldeclarado" value="<?php echo $exibir['preco'];?>" />         </div>                                     <button class="btn btn-success" type="submit" name="submit">             <span class="glyphicon glyphicon-search"></span>                        </button>                                  </form>                          <?php             if($_POST):?>                 <div class="row">             <div class="col-sm-12" style="margin-top: 10px; margin-bottom: 0px; border-style: none; border-top: none; border-color: #CBCBCB; border-width: 3px;">                                  <?php             $frete = trim($_POST['frete']);             //echo "<h3>{$frete}</h3>";               require_once 'frete.php';             $table = frete( $frete );               echo $table;?>                                </div></div><?php     endif;//POST                              ?> --> API DO PAGSEGURO:
      <form method="post" target="pagseguro" action="https://pagseguro.uol.com.br/v2/checkout/payment.html">                        <!-- Campos obrigatórios -->           <input name="receiverEmail" type="hidden" value="EMAIL@gmail.com">              <input name="currency" type="hidden" value="BRL">             <!-- Itens do pagamento (ao menos um item é obrigatório) -->         <?php              $i = 1;         do{             foreach ($_SESSION['carrinho'] as $id_prod => $qnt)  {                 $code_prod = $conexao->query("SELECT * FROM produtos where id = '$id_prod'");         $exi = $code_prod->fetch(PDO::FETCH_ASSOC);                 $prod = $exi['produto'];                 $precouni = number_format(($exi['preco']),2,'.',',');                          ?>                   <input name="itemId<?php echo $i; ?>" type="hidden" value="<?php echo $id_prod;?>">                   <input name="itemDescription<?php echo $i; ?>" type="hidden" value="<?php echo $prod; ?>">                   <input name="itemAmount<?php echo $i; ?>" type="hidden" value="<?php echo $precouni; ?>">                   <input name="itemQuantity<?php echo $i; ?>" type="hidden" value="<?php echo $qnt; ?>">                                                   <input name="itemWeight<?php echo $i; ?>" type="hidden" value="0">         <?php         $i++;              }                      } while($i <= count($_SESSION['carrinho'])); ?>                     <input name="itemShippingCost1" type="hidden" value="300"> (VALOR DO FRETE AQUI)                                    <!-- Informações de frete (opcionais) -->           <input name="shippingType" type="hidden" value="">  (TIPO DE FRETE SELECIONADO AQUI) Desculpe se ficou grande, se alguem puder me ajudar ficaria grato!
       
    • By rafaelwww
      Sou novo no fórum e essa é a minha primeira postagem.
      não sei se essa é área apropriada para esse tipo de postagem, mas vamos lá eu tenho um site e queria criar uma opção no qual o usuário poderia gravar um áudio que seria salvo em um banco de
      dados, mas não tenho ideia de como fazer isso se existe uma API que faça isso . 
      Peço por gentileza se alguém pudesse me dar uma dica.
       
    • By Joelend
      Estou utilizando TPasLibVlcPlayer para reprodução de videos e preciso que estes sejam exibidos sem áudio. 
      Tentei utilizar a função "vlc.SetAudioMute(true); " porem não funcionou... 
      Olhando a documentação encontrei isso: 

      "Aviso 
      Esta função nem sempre funciona. Se não houver fluxo de reprodução de áudio ativo, o status de mudo poderá não estar disponível. Se a passagem digital (S / PDIF, HDMI ...) estiver em uso, o muting pode não ser aplicável. Além disso, alguns plug-ins de saída de áudio não suportam muting. 
      Nota 
      Para forçar a reprodução silenciosa, desative todas as faixas de áudio. Isso é mais eficiente e confiável do que o mudo." 

      No meu caso, estou utilizando o HDMI. Minha duvida é sobre como desativar as faixas de audio. 

      Alguém saberia ajudar?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.