ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

idhtpp e NetHttpClient so funciona na primeira requisição

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
xadriano
Novato
Novato


Registrado: Quarta-Feira, 18 de Junho de 2003
Mensagens: 26

MensagemEnviada: Sex Nov 15, 2019 5:01 pm    Assunto: idhtpp e NetHttpClient so funciona na primeira requisição Responder com Citação

ola bom dia!

estou fazendo um testes com idhttp e o nethttpclient e ambos so retornam o resultado desejado qdo faco primeira consulta, qdo faco a segunda: o idhttp da o erro bad resquest e o nethttpclient traz para a pagina de login, se eu fechar abrir o programa ele conulta mais uma vez depois o erro persiste.

se eu usar programas como fiddler faco inúmeras requisições aproveitando a mesma sessão!

oque estou fazendo de errado?

grato,


Adriano
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1008
Localização: Cianorte-PR

MensagemEnviada: Sáb Nov 16, 2019 7:55 am    Assunto: Responder com Citação

Posta o trecho do código que fez...
Tenho um sincronizador que faz chamadas numa API PHP (o usuário pode configurar o tempo para fazer o sinc...).
Já fiz testes fazendo uma chamada por segundo e funciona normalmente.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
xadriano
Novato
Novato


Registrado: Quarta-Feira, 18 de Junho de 2003
Mensagens: 26

MensagemEnviada: Sáb Nov 16, 2019 8:42 am    Assunto: Responder com Citação

anderbelluno escreveu:
Posta o trecho do código que fez...
Tenho um sincronizador que faz chamadas numa API PHP (o usuário pode configurar o tempo para fazer o sinc...).
Já fiz testes fazendo uma chamada por segundo e funciona normalmente.


var
ss: tstringstream;
cookie : string;
begin

cookie := edtSessao.Text;

ss := tstringstream.Create('');
ss.WriteString('mat_id='+edtMat.Text);


self.NetHTTPClient1.CustomHeaders['Host'] := 'www.xxxxxx.com.br';
self.NetHTTPClient1.CustomHeaders['Connection'] := 'keep-alive';
self.NetHTTPClient1.CustomHeaders['Content-Length'] := '16';
self.NetHTTPClient1.Accept := 'application/json, text/javascript, */*; q=0.01';
self.NetHTTPClient1.CustomHeaders['Origin'] := 'https://www.xxxxxxxxx.com.br';
self.NetHTTPClient1.CustomHeaders['X-CSRF-Token'] := xrfToken.Text;
self.NetHTTPClient1.CustomHeaders['X-Requested-With'] := 'XMLHttpRequest';
self.NetHTTPClient1.CustomHeaders['UserAgent'] := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36';
self.NetHTTPClient1.CookieManager.AddServerCookie(edtSessao.text,'https://www.xxxxxxxxx.com.br/');
self.NetHTTPClient1.CustomHeaders['ContentType'] := 'application/x-www-form-urlencoded; charset=UTF-8';
self.NetHTTPClient1.CustomHeaders['Sec-Fetch-Site'] := 'same-origin';
self.NetHTTPClient1.CustomHeaders['Sec-Fetch-Mode'] := 'cors';
self.NetHTTPClient1.CustomHeaders['Referer'] := 'https://www.xxxxxxx.com.br/xxxxxxxx/home/index';
Self.NetHTTPClient1.AcceptEncoding := 'gzip, deflate, br';
Self.NetHTTPClient1.AcceptLanguage := 'pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7';
Self.NetHTTPClient1.CustomHeaders['Cookie'] := edtSessao.Text;

ss.Position := 0;
Memo1.Text := self.NetHTTPClient1.Post('https://www.xxxxxxx.com.br/xxxxxxxx/default/alterar-matricula', ss).ContentAsString(tencoding.UTF8);
ss.Free;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1008
Localização: Cianorte-PR

MensagemEnviada: Seg Nov 18, 2019 6:20 am    Assunto: Responder com Citação

Vc está mantendo sessão, o que não é o ideal(na minha opinião),
Outra, coisa, vc passa todas as informações toda vez que faz o POST, não precisa... Pq vc não cria o NetHTPP em runtime, agora se criar, ai sim...
Faz um freeandnil(ss);
Usar um Try Finally para o controle tbm ajuda.
Eu faria a criação de tudo em runtime e no Finally destrói o que foi criado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10507
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Seg Nov 18, 2019 12:21 pm    Assunto: Responder com Citação

Realmente ele tem razão, se você não aproveita a mesma sessão e preenche os dados de novo, mas com os cookies do anterior, com certeza dará problema.


Um,a forma de você ver o que está acontecendo em background é utilizar um sniffer, como o fiddles2 por exemplo, assim você analisa o fluxo e vê o que está dando errado.




bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB