Ir para conteúdo
marcio pereira batista

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

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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 ZeroCood
      Senhores bom dia, preciso pegar um retorno de uma api da procob ele retorna um json, nao estou conseguindo pegar o retorno, alguem pode me ajudar, veja o codigo: 
      { "code": "000", "message": "Consulta de testes com dados fictícios", "date": "2019-03-19", "hour": "10:07:41", "content": { "nome": { "existe_informacao": "SIM", "conteudo": { "documento": "99999999999", "tipo_documento": "PF", "nome": "JOÃO DA SILVA", "outras_grafias": [ "JOÃO D SILVA", "JOÃO SILVA" ], "data_nascimento": "15/06/1979", "outras_datas_nascimento": [ "25/06/1979" ], "idade": "26", "signo": "Gêmeos", "obito": "NAO", "sexo": "M", "uf": "RS,CE,", "situacao_receita": "REGULAR", "situacao_receita_data": "2016-10-17", "situacao_receita_hora": "11:02:49", "estrangeiro": { "existe_informacao": "SIM", "estrangeiro": "NAO", "pais_origem": { "codigo": "10", "origem": "Brasileiro" } } } }, "dados_parentes": { "existe_informacao": "SIM", "conteudo": [ { "documento": "88888888888", "nome": "MARIA DA SILVA", "campo": "mae", "obito": "NAO", "tipo_beneficio": "", "aposentado": "NAO" } ] }, "pessoas_contato": { "existe_informacao": "SIM", "conteudo": [ { "documento": "77777777777", "nome": "LUIZ SOUZA", "endereco": "SAO CLEMENTE", "bairro": "CENTRO", "cep": "44642000", "cidade": "VARJOTA", "uf": "CE" } ] }, "pesquisa_enderecos": { "existe_informacao": "SIM", "conteudo": [ { "logradouro": "RUA", "endereco": "SAO CLEMENTE", "bairro": "CENTRO", "cidade": "VARJOTA", "numero": "13", "cep": "44642000", "bloco": "", "apto": "", "casa": "", "quadra": "", "lote": "", "complemento": "", "uf": "CE" } ] }, "trabalha_trabalhou": { "existe_informacao": "SIM", "conteudo": [ { "documento": "92787126000176", "nome": "PADARIA PETER PÃO", "logradouro": "RUA", "endereco": "INÁCIO DA SILVA", "bairro": "CENTRO", "cidade": "CURITIBA", "numero": "999", "cep": "87878787", "bloco": "", "apartamento": "", "casa": "", "quadra": "", "lote": "", "complemento": "", "uf": "PR", "telefones": [ { "ddd": "99", "telefone": "99999999", "tipo": "fixo" } ] } ] }, "contato_preferencial": { "existe_informacao": "SIM", "conteudo": { "telefone_fixo": { "ddd": "99", "telefone": "99999999" }, "telefone_celular": { "ddd": "99", "telefone": "99999999" }, "telefone_outros": { "ddd": "41", "telefone": "33333333" }, "parentes": { "documento": "99999999999", "nome": "MATHEUS ALENCAR", "tipo": "pai" }, "contatos": { "documento": "99999999999", "nome": "MARIA ROBERTA PEREIRA" }, "empregador": { "documento": "99999999999", "nome": "JOAO NASCIMENTO SANTOS" }, "email": "email@email.com", "endereco": { "endereco": "FRANCISCO JOSE", "numero": "42", "cidade": "Curitiba", "estado": "PR", "cep": "99999999" } } }, "residentes_mesmo_domicilio": { "existe_informacao": "SIM", "conteudo": [ { "nome": "CARLA TEIXEIRA", "documento": "99999999999" }, { "nome": "LUIZ PEREIRA", "documento": "99999999999" } ] }, "emails": { "existe_informacao": "SIM", "conteudo": [ { "email": "joao@email.com", "pontuacao": "0" }, { "email": "joao.fernando@email2.com", "pontuacao": "0" } ] }, "numero_beneficio": { "existe_informacao": "SIM", "conteudo": { "numero": "999999999", "ano_aposentadoria": "7", "tipo_aposentadoria": "Aposentadoria Por Tempo De Contribuição", "aposentado": "SIM", "inss": "SIM", "acidente_trabalho": "SIM", "afastado_doenca": "SIM", "emprestimo": "SIM", "banco_nome": "Itaú Unibanco S.A.", "banco_agencia": "DUQUE DE CAXIAS/JARDIM PRIMAVERA", "banco_endereco": "ROD. WASHINGTON LUIZ, S/Nº", "banco_numero": "0", "banco_complemento": "QUADRA 3 - LOTE 5", "banco_bairro": "PARQUE SANTA LÚCIA", "banco_c_e_p": "99999999", "banco_cidade": "DUQUE DE CAXIAS", "banco_estado": "RJ" } }, "alerta_participacoes": { "existe_informacao": "SIM", "conteudo": { "existe": "SIM", "quantidade": 3 } }, "pesquisa_telefones": { "existe_informacao": "SIM", "conteudo": { "fixo": [ { "ddd": "51", "telefone": "11111111", "operadora": "Embratel - Fixo", "pontuacao": "0" } ], "celular": [ { "ddd": "41", "telefone": "22222222", "operadora": "TIM - Celular", "pontuacao": "0" } ], "outros": [ { "ddd": "41", "telefone": "33333333", "operadora": "OI - Fixo", "pontuacao": "0" } ], "comercial": [ { "ddd": "51", "telefone": "66666666", "operadora": "Embratel - Fixo", "pontuacao": "0" } ] } }, "outros_documentos": { "existe_informacao": "NAO" } } }  
      como faço para pegar esse json e mostrar cada um exe: comercial: -- , outros documentos: --
       
    • Por markhosbh
      Prezados, boa tarde!
       
      Estou tendo dificuldades para transformar um retorno WebService em uma tabela HTML.
      A minha dificuldade está na seguinte condição, se fosse cabeçalho fixo bastava eu utilizar o foreach para percorrer o array e estava ok.
      Porém, a quantidade de campos do array de retorno não é fixo, aí que se encontra minha dificuldade, como fazer para ler e imprimir o cabeçalho e o conteúdo da tabela, sendo que essas informações podem variar.
       
      Exemplo:
       
      Requisição: 
      SELECT A1_COD, A1_NOME, TIPO FROM USUARIO  
      Retorno:
      [ {"A1_COD":"0093","A1_NOME":"JOAO","TIPO":"TITULAR"}, {"A1_COD":"0016","A1_NOME":"ABELARDO","TIPO":"TITULAR"}, {"A1_COD":"8586","A1_NOME":"ADRIANA","TIPO":"TITULAR"} ]  
      Array:
      Array ( [0] => Array ( [A1_COD] => 0093 [A1_NOME] => JOAO [TIPO] => TITULAR ) [1] => Array ( [A1_COD] => 0016 [A1_NOME] => ABELARDO [TIPO] => TITULAR ) [2] => Array ( [A1_COD] => 8586 [A1_NOME] => ADRIANA [TIPO] => TITULAR ) ) Quero que seja impresso em uma tabela html
       
      A1_COD A1_NOME TIPO 0093 JOAO TITULAR 0016 ABELARDO TITULAR 8586 ADRIANA TITULAR  
      Mas como informado o cabeçalho poderia variar, sendo a requisição por exemplo ser:
       
      SELECT * FROM USUARIO  
      Desde então agradeço.
    • Por rd111072
      Olá, amigos.

      Estou gerando um arquivo .json com PHP, mas o mesmo quando é criado está mal formatado, não é possível ler seus dados. Vejam:
       
      { "0": "6", "idt1": "6", "1": "2018-10-19", "datahora": "2018-10-19", "2": "1", "resultado": "1", "3": "1", "indicbet": "1", "4": "Inglaterra - Premier League 2", "LIGA": "Inglaterra - Premier League 2", "5": "", "rh": "", "6": "", "ra": "", "7": " Fulham SubWest Brom Sub", "TIMEHA": " Fulham SubWest Brom Sub", "8": "71", "TARGLG": "71", "9": "0", "PLACH": "0", "10": "2", "PLACA": "2", "11": "GREEN", "RESULT": "GREEN" }{ "0": "6", "idt1": "6", "1": "2018-10-19", "datahora": "2018-10-19", "2": "1", "resultado": "1", "3": "1", "indicbet": "1", "4": "Inglaterra - Premier League 2", "LIGA": "Inglaterra - Premier League 2", "5": "", "rh": "", "6": "", "ra": "", "7": " Fulham SubWest Brom Sub", "TIMEHA": " Fulham SubWest Brom Sub", "8": "71", "TARGLG": "71", "9": "0", "PLACH": "0", "10": "2", "PLACA": "2", "11": "GREEN", "RESULT": "GREEN" } Como podem ver, faltam os colchetes no início e no fim e as vírgulas entre os "arrays".

      Aqui o código que gera o json:

       
      while($rowJ = mysqli_fetch_array($resultJ)){ if(count($_items) > 1){ //criar JSON/tabela do USUARIO // Escreve o resultado JSON em arquivo: $idu = $_SESSION['idu_log_pn']; $idu = 1; $pasta = $idu; $diretorio = "users/".$pasta; if(!file_exists($diretorio)) { mkdir("$diretorio", 0777); } // Tranforma o array $dados em JSON $dados_json = json_encode($rowJ, JSON_PRETTY_PRINT); // Cria o arquivo cadastro.json // O parâmetro "a" indica que o arquivo será aberto para escrita $fp = fopen("users/".$idu."/file".$idu.".json", "a"); // Escreve o conteúdo JSON no arquivo $escreve = fwrite($fp, $dados_json); // Fecha o arquivo fclose($fp); } } Alguém pode ajudar?
    • Por 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?
    • 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.
×

Informação importante

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