Ir para conteúdo
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por felk_fel@hotmail.com
      Boa tarde a todos!

      De vez em quando, acontece isso comigo, o Delphi compila a aplicação mas ela não roda ou fecha sozinha...Para resolver eu estou sempre tendo que fechar o delphi e criar uma nova aplicação. Alguém poderia me ajudar conforme o vídeo abaixo?

      https://www.youtube.com/watch?v=cFBJSS5yTN8

      Agradeço pela atenção.
    • Por Alanartes
      Podem me ajudar como posso criar um botão de pagamento com essa api: https://ecommerce.picpay.com/doc
      Eu não entendi como organizar o codigo 
    • Por Felipe Garciax
      Ola,
       
      Estou com o seguinte problema, no formulario principal do meu projeto tenho um SplitView e um Image em AlClient com uma imagem em 193 kb, ao abrir e fechar o SplitView em execucao a imagem PISCA, ja usei no OBJECT INSPECTOR o DoubleBuffered em TRUE tanto para o form quanto para o SplitView e o problema persiste, ja fiz o teste no codigo tanto para o EVENTO OnShow e OnCreat:
      DoubleBuffered :=True;  e nenhum resultado... Help Me
    • Por breno2019
      Olá pessoal, pretendo criar um aplicativo que precisará conter um chat interno enviando mensagens uma a uma, a idéia do aplicativo é a mesma que uber, a pessoa estará disponível para oferecer carona e quem se interessar em aceitar vai abrir o chat. Mas o foco da minha pergunta está no chat, como eu faria esse chat?
      Detalhe, estou usando android studio para desenvolver o app, beckend em php + mysql para api e estou consumindo o webservice com o retrofit.
    • Por sandoval da silva
      Fala galera, boa noite, galera a minha duvida é ,como posso executar a curl no php,veja o formato abaixo.
       
      curl -X POST \ -H 'accept: application/json' \ -H 'content-type: application/x-www-form-urlencoded' \ 'https://api.mercadopago.com/oauth/token' \ -d 'client_id=CLIENT_ID' \ -d 'client_secret=CLIENT_SECRET' \ -d 'grant_type=authorization_code' \ -d 'code=AUTHORIZATION_CODE' \ -d 'redirect_uri=REDIRECT_URI' eu preciso executar este curl em php, alguém poderia mim mostrar como ficaria este script em php.
      estou tentando colocar esta api do mercado pago para funcionar e está meio complicado.segue o link da api
       
      LINK: https://www.mercadopago.com.br/developers/pt/guides/marketplace/web-checkout/create-marketplace/
       
      Qualquer ajuda é de bom tamanho, desde já agradeço.
       
      <?php
      //grato
      ?> 
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.