| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
AndersonCamargo10 Novato

Registrado: Segunda-Feira, 5 de Dezembro de 2016 Mensagens: 43
|
Enviada: Seg Mai 15, 2017 7:01 pm Assunto: Ajuda com o uso do componente IdHttp |
|
|
Olá,
Como posso usar o IdHttp para verificar se um site existe, exemplo, http://site.com.br
Eu sei que existe algumas funções por ai sem o IdHttp, eu já testei mas em alguns casos elas demoram muito para dar o retorno quando o site não existe, pelo menos com o indy da para controlar esse tempo, eu gostaria de usar ele mas nem tenho ideia de como fazer isso.
Quero fazer a verificação e ter o retorno existe, não existe. |
|
| Voltar ao Topo |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Ter Mai 16, 2017 3:01 pm Assunto: |
|
|
Faz um ping no site que é bem rapido.
escreva o site www.site.com.br e não http...
veja se te ajuda. |
|
| Voltar ao Topo |
|
 |
AndersonCamargo10 Novato

Registrado: Segunda-Feira, 5 de Dezembro de 2016 Mensagens: 43
|
Enviada: Ter Mai 16, 2017 5:09 pm Assunto: |
|
|
Mas como? No caso seria pedindo para o Delphi executar o CMD? Mas como eu pegaria a resposta?
Observando que teria que funcionar para sites http e https |
|
| Voltar ao Topo |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Qua Mai 17, 2017 1:53 am Assunto: |
|
|
| não executa o CMD. pesquisa ping com delphi que vai ver quanto material vc encontra. quando chegar em casa te mando um exemplo. |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qua Mai 17, 2017 10:59 am Assunto: |
|
|
Teste esta função:
Adicione WinInet na uses.
Função:
| Código: | function TestaSite(url: string): Boolean;
var
hSession, hfile, hRequest: hInternet;
dwindex, dwcodelen: Dword;
dwcode: array [1 .. 20] of char;
res: pchar;
begin
if pos('http://', lowercase(url)) = 0 then
url := 'http://' + url;
Result := False;
hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG,
nil, nil, 0);
if assigned(hSession) then
begin
hfile := InternetOpenUrl(hSession, pchar(url), nil, 0,
INTERNET_FLAG_RELOAD, 0);
dwindex := 0;
dwcodelen := 10;
HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodelen, dwindex);
res := pchar(@dwcode);
Result := (res = '200') or (res = '302');
if assigned(hfile) then
InternetCloseHandle(hfile);
InternetCloseHandle(hSession);
end;
end; |
Exemplo de uso:
| Código: | if TestaSite('www.google.com.br') then
ShowMessage('Site ativo.')
else
ShowMessage('Site inativo.'); |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Qua Mai 17, 2017 12:58 pm Assunto: |
|
|
Ou vc pode usar assim:
| Código: |
function pingIp( host: String): Boolean;
var
IdICMPClient: TIdICMPClient;
begin
try
begin
IdICMPClient := TIdICMPClient.Create( nil );
IdICMPClient.Host := host;
IdICMPClient.ReceiveTimeout := 500;
IdICMPClient.Ping;
result := ( IdICMPClient.ReplyStatus.BytesReceived > 0 );
end;
finally
IdICMPClient.Free;
end
end;
|
e pra chamar
| Código: |
begin
if pingIp(www.site.com.br) then
begin
showmessage('site encontrado');
end
else
begin
Showmessage('site não encontrado');
end;
end;
|
lembrando de declarar IdICMPClient na Uses é claro.
veja ai se pode te ajudar.
att.
Anderson. |
|
| Voltar ao Topo |
|
 |
|