sábado, 5 de novembro de 2011

Geolocalização pelo IP com HttpClient

Existe um recurso muito interesante, com certa idade, meio timido pois fica alheio aos principais flashes na ferramenta, mas que até os dias atuais mostra-se de grande utilidade, é o HttpClient.  Porque? simplesmente pelo fato de que podemos usar o protocolo HTTP em modo de programação, ou seja, que se programe uma requisição, se envie para uma URL e se obtenha os resultados dessa chamada. Isso quer dizer, que se execute uma chamada HTTP em forma de programação, sem que a mesma seja apresentada no browser.

Aplicações para isso? Muitas, inclusive encontrar a geolocalização de um certo IP na web. Esse é o exemplo que será apresentado a seguir, e tem como objetivo obter informações de um determinado serviço na web.


Obtendo a geolocalização

Existem uma série de serviços na Web que realizam essa operação, selecionamos uma que devolve um XML, JSON ou CSV, a partir de um determinado IP fornecido, e que pode ser encontrado em (http://freegeoip.appspot.com/), que necessita apenas de dois 'parametros' para funcionar: o tipo de retorno e o IP.  O formato para a chamada pode ser algo semelhante ao seguinte exemplo: http://freegeoip.appspot.com/xml/72.14.247.141

O texto XML representa o formato do retorno do serviço, que nesse caso devolve algo como:



Outros formatos são disponiveis, em especial o JSON e CSV.

Programando


Não é necessária muita programação para obter essas informações, a não ser uma interface simples para obter um IP qualquer, e em seguida, acessar o WebService na web, algo semelhante a.


Para obter as informações, teriamos então a programação do HttpClient, apontando para o serviço na web, ou seja, o Host, Port e forma de Secure.

     &httpClient.Host = "freegeoip.appspot.com"
     &httpClient.Port = 80
     &httpClient.Secure = False

Os parâmetros são passados por meio de uma variável texto, incluindo-se o formato desejado e o IP que se deseja investigar. Em nosso caso optamos por um texto separado por vírgulas.

     &string  = "/csv/"
     &string += &ip

Em seguida a chamada ao WebService, por meio do método Execute.

     &httpClient.Execute("GET",&string )

Se não ocorrer nenhum erro nessa chamada, teremos um texto resultante da chamada, que pode ser obtida por.
          &texto = &httpClient.ToString()

O programa completo é apresentado a seguir, inclusive com o tratamento de erros.



Uma tabela foi programada para se mostrar o resultado, como aprsentado na figura 1, acima.

Voce pode encontrar maiores informações na documentação da Artech, agora, se não conseguiu visualizar uma boa aplicação para esse recurso, vou dar mais uma dica, consulte as páginas amarelas dos webservices em http://www.webservicelist.com/