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 

Ajuda com o uso do componente IdHttp

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


Registrado: Segunda-Feira, 5 de Dezembro de 2016
Mensagens: 43

MensagemEnviada: Seg Mai 15, 2017 7:01 pm    Assunto: Ajuda com o uso do componente IdHttp Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


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

MensagemEnviada: Ter Mai 16, 2017 3:01 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
AndersonCamargo10
Novato
Novato


Registrado: Segunda-Feira, 5 de Dezembro de 2016
Mensagens: 43

MensagemEnviada: Ter Mai 16, 2017 5:09 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


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

MensagemEnviada: Qua Mai 17, 2017 1:53 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Mai 17, 2017 10:59 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
anderbelluno
Colaborador
Colaborador


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

MensagemEnviada: Qua Mai 17, 2017 12:58 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
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