Jump to content

marcio pereira batista

Members
  • Content count

    11
  • Joined

  • Last visited

Community Reputation

0 Comum

About marcio pereira batista

  1. marcio pereira batista

    webserver pegar os parametros que são enviados através da query string json 

    o para constar foi resolvido com a dica do amigo paulofreire do forum devmedia (muito obrigado!) deixo aqui a solução para ajudar a quem precisar do mesmo. var pID, pUsuario: string; st: TStringStream; if (ARequestInfo.URI = '/new_user_identified.fcgi?session=gJgOHkblq69Vc3WLOOdUMvrf&') or (ARequestInfo.URI = '/new_user_identified.fcgi?session=gJgOHkblq69Vc3WLOOdUMvrf&/') then begin try pID := ARequestInfo.Params.Values['user_id']; pUsuario := ARequestInfo.Params.Values['user_name']; Edit1.Text := pID; if pID = '0' then begin Label1.Caption := 'Não reconhecido...'; end else Label1.Caption := pUsuario + ' bem vindo ao Clube.'; finally lblInfo.Caption := AResponseInfo.ContentText; end; end; abraço
  2. marcio pereira batista

    webserver pegar os parametros que são enviados através da query string json 

    tentando melhorar minha explicação para ver se consigo ajuda, estou prestes a perder o cliente.. no oncommandget do meu idttpserver tenho o seguinte Var contador : integer; Cmd : String; Argumentos : TArguments; ServerMethod1 : TServerMethods1; JSONStr : string; lJSO : ISuperObject; lRequest: TStringStream; lResponse: String; begin contador:=0; Cmd := ARequestInfo.RawHTTPCommand; if (UpperCase(Copy (Cmd, 1, 4)) = 'POST') then Begin Argumentos := TServerUtils.ParseRESTURL (ARequestInfo.URI); ServerMethod1 := TServerMethods1.Create (nil); Try LoglastRequest (ARequestInfo); If UpperCase(Copy (Cmd, 1, 4)) = 'POST' Then BEGIN IF Copy (Cmd, 1, 25) = ('POST /new_user_identified') then begin ///aqui vou coloca a função de pesquisa//pesquisasocio + para isso preciso saber user_id JSONStr := ServerMethod1.CallPOSTServerMethod(Argumentos); end; END; AResponseInfo.ContentText := JSONStr; LoglastResponse (AResponseInfo); AResponseInfo.WriteContent; Finally ServerMethod1.Free; End; end; end; com essa rotina acima que adaptei de um site consigo fazer meu server ver oque chega no endpoint "POST /new_user_identified", eu preciso pegar o json que vem junto e nao sei como, vi um topico aqui no forum que diz para fazer o seguinte pra pegar o json: ///////////////capturar o json///OnCommandGet do TidHTTPServer Var AJSONInput: string; aRequestStream: TStringStream; begin aRequestStream := TStringStream. Create; try aRequestStream.LoadFromStream (ARequestInfo.PostStream); aRequestStream.Position := 0; AJSONInput := aRequestStream.DataString; finally aRequestStream. Free; end; end; como posso colocar essa rotina pra capturar o json dentro do meu oncommandget ? ja fiz varius testes e nao estou conseguindo, é a primeira vez que trabalho com webserver e estou prestes a perder o cliente, por favor se alguem puder me ajudar.
  3. boa noite amigos, estou iniciando com a parte de webserver e estou com dificuldade para pegar os parametros que são passados por uma catraca, ja consegui fazer toda a configuração da mesma e o webserver que fiz consegue indentificar a requisição dela, meu problema esta para pegar a informação do id_user que vem no json quando coloco a digital na catraca o meu webserver identifica o evento vindo da mesma na porta 8080: POST /new_user_identified.fcgi?session=?& HTTP/1.1 ate ae tudo ok,+ eu preciso e da informação que vem junto com o POST da ctraca no meu webserver agora segue oque o fabricante me passou: 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 preciso pegar a informação do user_id acima e não sei como ja que oque chega na uri e somente:POST /new_user_identified.fcgi?session=?& HTTP/1.1
  4. marcio pereira batista

    configurar web server para escutar as requisições http

    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
  5. marcio pereira batista

    ler digital da catraca controlID usando rest/json

    boa tarde amigos, meu problema e o seguinte, estou configurando meu sistema para acessar a catraca controlID usando rest/json, eu consigo pegar as informações da catraca e liberar o acesso dela sem problema quando envio as requisiçoes pelo meu sistema, meu problema e que eu não estou conseguindo pegar as informaçoes que vem da catraca sem q eu tenha feito uma requisição, ex , a pessoa coloca a digital na catraca (nesse caso a catraca e quem envia a requisição para o meu sistema, gostaria de uma orientação sobre como fazer, pelo que entendi eu teria que criar um servidor rest/json para receber essas informações ?, desde ja agradeço a quem possa me ajudar sobre como proceder nesse caso
  6. marcio pereira batista

    Delphi Boleto

    boa tarde amigo, por que você não tenta utilizando o componente acbrboleto dos componentes acbr, funciona muito bem. https://www.projetoacbr.com.br
  7. boa tarde amigos, estou utilizando o rest debugguer e quando tento passar o json abaixo pelo custom body retorna erro { "error":"Invalid member 'type' (string expected, got undefined)", "code":1 } sendo que estou passando de acordo com o manual da catraca (e uma catraca eletronica controlid) e sempre retorna o erro independente de estar no rest debugger ou no postman, estou iniciando nessa parte de rest/json e tenho visto varios videos + ainda estou apanhando um pouco... desde ja agradeço a quem puder me ajudar. ex do manual : $.ajax({ url: "/execute_actions.fcgi?session=" + session, type: 'POST', contentType: 'application/json', data: JSON.stringify({ actions: [ { action: "catra", parameters: "allow=clockwise" } ] }) }); estou passando os dados do contenttype pelo head e esta ok, o problema esta mesmo quando tento passar oque esta no campo json.stringfy estou passando no campo custom body da seguinte forma : ({ actions: [ { action: "catra", parameters: "allow=clockwise" } ] }) e retorna o erro acima quando executo 1 comando + simples tipo pegar as informações da catraca ou setar o beepvai sem problema : campo custom body ok : { general: ["beep_enabled", "relay1_timeout"] }
  8. marcio pereira batista

    Aniversários entre duas datas

    boa noite amigo, eu faço assim e funciona perfeitamente, porem utilizo dbxpress, + basta colocar a sql na forma q esta q vai funcionar tb, no caso abaixo eu comparo os dias somente, no caso abaixo seleciono o mes e o periodo (entre o dia d1 e o dia d2 no mes desejado) simpledataset1.Active:=False; simpledataset1.dataset.CommandText := 'SELECT CODIGO,NOME, NASCIMENTO,TELEFONE FROM CLIENTES WHERE EXTRACT(MONTH FROM NASCIMENTO)=:MES AND EXTRACT(DAY FROM NASCIMENTO) BETWEEN :D1 AND :D2 ORDER BY EXTRACT(DAY FROM NASCIMENTO)'; SIMPLEDataSet1.dataset.ParamByName('Mes').AsInteger := StrToInt(Edit1.Text); SIMPLEDataSet1.dataset.ParamByName('d1').AsInteger := StrToInt(Edit2.Text); SIMPLEDataSet1.dataset.ParamByName('d2').AsInteger := StrToInt(Edit3.Text); simpledataset1.Active:=True; espero que te ajude de alguma forma abraço
  9. boa tarde amigo, eu precisei fazer algo do tipo e fiz criando um combobox com todos os horarios permitidos e dessa forma nao tem como colocar horario invalido. espero que te ajude, abraço
  10. marcio pereira batista

    OnDrawColumnCell do Dbgrid

    bom dia amigo, você precisa localizar esse registro na outra tabela, tenta assim : TBLPRODUTOSTEMPcodbarras.Locate('seu campo da busca',ean,[lopartialkey]); abraço
  11. marcio pereira batista

    conectar restdebugger com delphi e api skyhub

    boa tarde amigos, meu problema e o seguinte : estou tentando implementar uma comunicação do meu sistema com api da skyhub para integração dos sistemas, mas não estou conseguindo configurar corretamente a conexão no delphi ou pelo restdebugger (da o mesmo erro nos 2), fiz as configurações de acordo com o manual da skyhub e quando uso uma requisição get / questions vai normalmente no rest debugger (consequentemente no delphi tb) + caso eu tente outros comandos tipo : /products ou /categories , me retorna o json : { "error":"Usuário bloqueado ou inexistente" } fiz utilizando a recomendação do amigo com o programa ReadyAPI 2.5.0 conforme sugerido e conecta perfeitamente e executado todos os comandos sem problema, sendo assim o problema esta em conseguir configurar no delphi, segue rotina q tentei no delphi via linha de comando e da o mesmo erro que no rest debugger, no manual do provedor do serviço esta para configurar no header conforme fiz e funcionou no readapi e no site da skyhub tb funciona normalmente no api explorer + no delphi nada me retorna o erro acima. restClient1.baseurl :='https://api.skyhub.com.br'; restClient1.Accept := 'application/json, text/plain; q=0.9, text/html;q=0.8,'; restResponse1.ContentType := 'text/xml'; restRequest1.AcceptCharset := 'UTF-8, *;q=0.8'; restRequest1.Params[0].Kind := pkHTTPHEADER; restRequest1.Params[0].name := 'Accept'; restRequest1.Params[0].Value := 'application/json;charset=UTF-8'; restRequest1.Params[1].Kind := pkHTTPHEADER; restRequest1.Params[1].name := 'Content-Type'; restRequest1.Params[1].Value := 'application/json'; restRequest1.Params[2].Kind := pkHTTPHEADER; restRequest1.Params[2].name := 'X-User-Email'; restRequest1.Params[2].Value := 'multisoftwarepdosul@gmail.com'; restRequest1.Params[3].Kind := pkHTTPHEADER; restRequest1.Params[3].name := 'x-accountmanager-key'; restRequest1.Params[3].Value := 'minhakey'; restRequest1.Params[4].Kind := pkHTTPHEADER; restRequest1.Params[4].name := 'x-Api-Key'; restRequest1.Params[4].Value := 'minhasenhaapi'; restRequest1.resource:='/categories'; restRequest1.execute; caso eu troque o /categories para /questions por exemplo retorna 200, + qualquer outro comando retorna usuario bloqueado ou inexistente, sendo q pelo ready api e site da skyhub vai tudo normalmente desde ja agradeço a quem possa me ajudar desde ja agradeço
×

Important Information

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