Web Service PHP para saber País de origem de um IP
Muitas vezes existe a necessidade de se saber a origem de um IP, é possível com programação obter o IP dos acessos ao nosso website. Mas olhar para um IP pouco ou nada nos diz a não ser a gama em que o mesmo se encontra. Apesar de se poder usar os IPs para controlar acessos por exemplo, é possível saber-se a origem, país, do mesmo com este Web Service. Este artigo vai demonstrar como pode aceder ao Web Service Tekever que devolve o local geográfico de origem de um dado IP. e para tal basta enviar-se o IP como argumento para uma única função que este Web Service disponibiliza. O Web Service está localizado no URL http://webservices.tekever.eu/ip2pais/?wsdl, e pode verificar a estrutura do mesmo olhando para o respectivo XML.
Através deste XML, é possível verificar as funções e propriedades disponíveis, apesar de ser necessário algum trabalho a visualizar o XML. No entanto alguns Web Services, e consoante a tecnologia em que foram feitos, permitem-nos ver fácilmente as funções disponíveis. O Web Service da Tekever foi feito em NuSOAP, e tal como os Web Services feitos em .NET, este permite-nos visualizar as funções disponíveis e a sua constituição de forma mais fácil, para tal basta tirar o ?wsdl do final do URL, prove seguindo o link http://webservices.tekever.eu/ip2pais/.
As funções disponíveis são: IP2Pais - recebe um argumento, o IP de onde se pretende saber a origem. Agora vamos criar um Web Service para sabermos a origem de um IP. O NuSOAP, ferramenta escolhida para acedermos a Web Services, especialmente concebida para PHP 4.x, pode ser obtida no seguinte link http://sourceforge.net/projects/nusoap, descarregue o ficheiro, descomprima-o, e lendo as instruções grave-o num local do directório da sua aplicação. Para este exemplo, temos um directorio /home/tekever/public_html/, onde vai estar além do ficheiro de acesso ao Web Service criado mais à frente, o directório obtido do NuSOAP, esse directório NuSOAP vai-se chamar nusoap/ e como tal ficará localizado em /home/tekever/public_html/nusoap/. Dentro deste directório irá constar logo na sua raíz o ficheiro nusoap.php, nusoapmime.php, e outros do tipo class.soap_*.php. A primeira coisa a fazer é incluir a classe do nusoap no código:
Depois atribui-se a uma variável o link de acesso ao Web Service:
Nete caso está a ser forçado o envio da encomenda para a Zona 5, com o peso de 1001 Gramas:
Vai-se instanciar a classe soapclient(), que recebe o link do Web Service, e a indicação do tipo de processamento a ser feito, neste caso sendo Web Service será wsdl:
Existem pelo menos duas formas de se aceder às funções dos Web Services através de NuSOAP, uma delas e bem prática é primeiro instanciar o método getProxy(), para depois se aceder directamente às funções como se de métodos da classe se tratassem (o PHP 5 já permite fazer isto por omissão):
O primeiro exemplo será aceder ao custo da encomenda caso fosse enviada para um destino Internacional da zona definida 5, com peso de 1001 Gramas:
Escreve-se no écran o resultado, como é Array, para se aceder ao país por exemplo faz-se da seguinte forma:
Quando não se tem a certeza da constituição de um Array, resultado de um Web Service, poder-se-á escrever o resultado com var_dump(), neste caso fazia-se: O código do ficheiro, do código explicado é o que se apresenta a seguir: ficheiro: ws-ip2pais.php
Depois de se executar o código acima descrito, teria-se o seguinte resultado: Conversão do IP 81.193.4.92: Código ISO: PT País: Portugal Região: Europe Capital: Lisbon Moeda: Euro PHP 5: Em PHP 5, existe já um objecto para acesso aos Web Services, e como tal não seria necesário usar o NuSOAP. O exercício acima descrito usando PHP 5, e sem recurso a NuSOAP, seria o seguinte:
A grande diferença foi no uso da classe de SOAP, o PHP5 tem já implementada uma classe SoapClient, que automáticamente sem necessidade de mais nenhum método permite aceder às funções disponibilizadas pelo Web Service em questão.
O resultado, no browser, deste script seria exactaemnte o mesmo do anterior. Este serviço(Web Service) é gratuito, e as informações são actualizadas uma vez em cada 3 meses. Escrito por João Vieira Website do autor: http://www.joaovieira.com Dados do autor: Programador multi-plataforma com ênfase em ambiente Linux. |
Avalie este artigo
|
|||||||||||||||||||||
|
Envie a alguém conhecido
| ||||||||||||