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

REST

Delphi

CRUD - Delphi

16/12/2018

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

estou utilizando o componente indy IdHTTPServer1

desde ja agradeço a que puder me ajudar
Marcio Batista

Marcio Batista

Curtidas 1

Respostas

Marcio Batista

Marcio Batista

16/12/2018

tentando melhorar minha explicação para ver se consigo ajuda, estou prestes a perder o cliente..<br />
<br />
no oncommandget do meu idttpserver tenho o seguinte<br />
<br />
Var<br />
contador : integer;<br />
Cmd : String;<br />
Argumentos : TArguments;<br />
ServerMethod1 : TServerMethods1;<br />
JSONStr : string;<br />
lJSO : ISuperObject;<br />
lRequest: TStringStream;<br />
lResponse: String;<br />
begin<br />
contador:=0;<br />
Cmd := ARequestInfo.RawHTTPCommand;<br />
if (UpperCase(Copy (Cmd, 1, 4)) = ''POST'') then Begin<br />
Argumentos := TServerUtils.ParseRESTURL (ARequestInfo.URI);<br />
ServerMethod1 := TServerMethods1.Create (nil);<br />
Try<br />
LoglastRequest (ARequestInfo);<br />
If UpperCase(Copy (Cmd, 1, 4)) = ''POST'' Then<br />
BEGIN<br />
IF Copy (Cmd, 1, 25) = (''POST /new_user_identified'') then begin<br />
<br />
///aqui vou coloca a função de pesquisa//pesquisasocio + para isso preciso saber user_id<br />
JSONStr := ServerMethod1.CallPOSTServerMethod(Argumentos);<br />
end;<br />
END;<br />
<br />
AResponseInfo.ContentText := JSONStr;<br />
<br />
LoglastResponse (AResponseInfo);<br />
AResponseInfo.WriteContent;<br />
Finally<br />
ServerMethod1.Free;<br />
End;<br />
end;<br />
end;<br />
<br />
<br />
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:<br />
<br />
///////////////capturar o json///OnCommandGet do TidHTTPServer <br />
Var <br />
AJSONInput: string; <br />
aRequestStream: TStringStream; <br />
begin <br />
aRequestStream := TStringStream. Create; <br />
try <br />
aRequestStream.LoadFromStream (ARequestInfo.PostStream); <br />
aRequestStream.Position := 0; <br />
AJSONInput := aRequestStream.DataString; <br />
finally <br />
aRequestStream. Free; <br />
end; <br />
end; <br />
<br />
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.
GOSTEI 0
POSTAR