Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
xadriano Novato
Registrado: Quarta-Feira, 18 de Junho de 2003 Mensagens: 26
|
Enviada: Sex Nov 15, 2019 5:01 pm Assunto: idhtpp e NetHttpClient so funciona na primeira requisiçã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 |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1029 Localização: Cianorte-PR
|
Enviada: Sáb Nov 16, 2019 7:55 am Assunto: |
|
|
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 |
|
|
xadriano Novato
Registrado: Quarta-Feira, 18 de Junho de 2003 Mensagens: 26
|
Enviada: Sáb Nov 16, 2019 8:42 am Assunto: |
|
|
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 |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1029 Localização: Cianorte-PR
|
Enviada: Seg Nov 18, 2019 6:20 am Assunto: |
|
|
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 |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Seg Nov 18, 2019 12:21 pm Assunto: |
|
|
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 |
|
|
|