ConexaoDelphiAndroid
Olá amigos
Gostaria de saber como se faz corretamente isso:
Tenho um aplicativo delphi android com todas as funcionalidades implementadas e funcionando, porem se o cara loga e o aplicativo fica em 2º plano ao tentar enviar as coordenadas da um erro de http:500 mas não se trata de um erro de pagina inexistente e sim da conexão que expirou.
Alguém tem um exemplo de como se faz para verificar
se a conexão existe
insira o dado
senão
conecta e depois insere o dado
Gostaria de saber como se faz corretamente isso:
Tenho um aplicativo delphi android com todas as funcionalidades implementadas e funcionando, porem se o cara loga e o aplicativo fica em 2º plano ao tentar enviar as coordenadas da um erro de http:500 mas não se trata de um erro de pagina inexistente e sim da conexão que expirou.
Alguém tem um exemplo de como se faz para verificar
se a conexão existe
insira o dado
senão
conecta e depois insere o dado
Carlos Faria
Curtidas 0
Melhor post
Mateus Carvalho
18/08/2016
No FDConnection existe uma opção que pode te ajudar.
Em "ResourceOptions" vc vai encontrar um parâmetro chamado "AutoReconnect". Habilite ele para True e faça o teste.
Em "ResourceOptions" vc vai encontrar um parâmetro chamado "AutoReconnect". Habilite ele para True e faça o teste.
GOSTEI 1
Mais Respostas
Carlos Faria
10/08/2016
Estou fazendo um testes , troquei todos os componentes dbexpress (sqldatabase por firedac ) e configurei a propriedade , vou fazer um teste agora e retorno. Mas por hora obrigado
GOSTEI 0
Carlos Faria
10/08/2016
Continua do mesmo jeito
http/1.1 403 session has expired.
http/1.1 403 session has expired.
GOSTEI 0
Carlos Faria
10/08/2016
Esse é o metodo usado para inserir o registo o que não estou sabendo fazer é verificar la no servidor datasnap se a conexao esta aberta
procedure TfrmMain.ListBoxItem1Click(Sender: TObject);
var
qtl, login, user, lat, long: string;
A: string;
B: string;
x: string;
y: string;
clientrest: TServerMethods1Client;
retInsert: integer;
begin
LocationSensor1.Active := true;
A := LocationSensor1.Sensor.Latitude.ToString;
B := LocationSensor1.Sensor.Longitude.ToString;
x := StringReplace(A, ',', '.', [rfReplaceAll, rfIgnoreCase]);
y := StringReplace(B, ',', '.', [rfReplaceAll, rfIgnoreCase]);
qtl := x + ' ' + y;
login := v_nr_matricula;
user := '';
lat := x;
long := y;
//Aqui é server metodos do datasnap
if clientrest = nil then
clientrest := TServerMethods1Client.Create
(ClientModule1.DSRestConnection1);
retInsert := clientrest.insertQTL_integer(qtl, login, user, lat, long);
if retInsert > -1 then
ShowMessage('Localização enviada !' + ''#13'' +
'Aguarde a confirmação via Rede Rádio' + ''#13'' + 'Cordenadas : ' + x
+ ' ' + y)
else
ShowMessage
('Erro ao enviar a localização: Verifique sua conexão com a internet... ');
end;GOSTEI 0
Carlos Faria
10/08/2016
Ou talvez esteja aqui o erro , esse método esta dentro do serverMetodos do datasnap , seria preciso antes verificar se existe uma conexao e abri-la e sim como fazer ?
function TServerMethods1.insertQtl_Integer(qtl, moto, Userid, lat,long: string): Integer;
begin
Result := -1 ;
with Fqry_QTL do
begin
close ;
sql.Clear ;
SQL.Add('insert into tb_QTL (Qtl, Nm_Login,userid,Ds_latitude,Ds_Longitude) values (:Qtl, :Nm_Login,:userid,:Ds_latitude,:Ds_Longitude)') ;
ParamByName('qtl').AsString := Qtl ;
ParamByName('nm_login').AsString := moto;
ParamByName('userid').AsString := userid;
ParamByName('ds_latitude').AsString := lat;
ParamByName('ds_longitude').AsString := long;
ExecSQL;
Result := 0 ;
end;
end;GOSTEI 0
Mateus Carvalho
10/08/2016
Regis, desculpa a demora.
Eu crie uma aplicação simples aqui, e está normal. Você poderia informar-me qual os componentes que vc está utilizando?
Eu crie uma aplicação simples aqui, e está normal. Você poderia informar-me qual os componentes que vc está utilizando?
GOSTEI 0
Carlos Faria
10/08/2016
la no DataSnap componentes da paleta firedac
No projeto estou usando um acesso direto ao servermetodos como mostra o código abaixo
Aqui é la no DataSnap no servermetodos
########################Funçao que está no serverMetodos do datasnap ##############################################################
####################################################################################################
///Aqui no projeto mesmo através da classe TServerMethods1Client;
No projeto estou usando um acesso direto ao servermetodos como mostra o código abaixo
Aqui é la no DataSnap no servermetodos
########################Funçao que está no serverMetodos do datasnap ##############################################################
function TServerMethods1.insertQtl_Integer(qtl, moto, Userid, lat,long: string): Integer;
begin
Result := -1 ;
with Fqry_QTL do
begin
close ;
sql.Clear ;
SQL.Add('insert into tb_QTL (Qtl, Nm_Login,userid,Ds_latitude,Ds_Longitude) values (:Qtl, :Nm_Login,:userid,:Ds_latitude,:Ds_Longitude)') ;
ParamByName('qtl').AsString := Qtl ;
ParamByName('nm_login').AsString := moto;
ParamByName('userid').AsString := userid;
ParamByName('ds_latitude').AsString := lat;
ParamByName('ds_longitude').AsString := long;
ExecSQL;
Result := 0 ;
end;
####################################################################################################
///Aqui no projeto mesmo através da classe TServerMethods1Client;
clientrest: TServerMethods1Client;
retInsert: integer;
begin
LocationSensor1.Active := true;
A := LocationSensor1.Sensor.Latitude.ToString;
B := LocationSensor1.Sensor.Longitude.ToString;
x := StringReplace(A, ',', '.', [rfReplaceAll, rfIgnoreCase]);
y := StringReplace(B, ',', '.', [rfReplaceAll, rfIgnoreCase]);
qtl := x + ' ' + y;
login := v_nr_matricula;
user := '';
lat := x;
long := y;
begin
if clientrest = nil then
clientrest := TServerMethods1Client.Create
(ClientModule1.DSRestConnection1);
retInsert := clientrest.insertQTL_integer(qtl, login, user, lat, long);
if retInsert > -1 then
ShowMessage('Localização enviada !' + ''#13'' +
'Aguarde a confirmação via Rede Rádio' + ''#13'' + 'Cordenadas : ' + x
+ ' ' + y)
else
ShowMessage
('Erro ao enviar a localização: Verifique sua conexão com a internet... ');GOSTEI 0
Mateus Carvalho
10/08/2016
O erro 500 representa que a execução do método falhou, e junto com esse erro, vem descrito o motivo. Você pode enviar um print ou o que vem descrito nessa mensagem?
Link com mais informações sobre os erros mais populares: http://docwiki.embarcadero.com/RADStudio/XE8/en/DataSnap_REST
Att!
Link com mais informações sobre os erros mais populares: http://docwiki.embarcadero.com/RADStudio/XE8/en/DataSnap_REST
Att!
GOSTEI 0