<?php
Class IPQuery{
private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php';
public static function getIPInfo($ip){
$long = ip2long($ip);
if($long === 0){
throw new Exception('IP address error', 5);
}
$ip=long2ip($long);
$IPInfo = self::queryIPInfo($ip);
return self::parseJSON($IPInfo);
}
private static function queryIPInfo($ip){
$query = http_build_query(array('ip'=>$ip));
$ch = curl_init();
$options = array(
CURLOPT_URL => sprintf('%s?%s', self::$_requestURL, $query),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_AUTOREFERER => false,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HEADER => false,
CURLOPT_TIMEOUT => 3.0,
);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
curl_close($ch);
return $content;
}
private static function parseJSON($json){
$O = json_decode ($json, true);
if(false === is_null($O)){
return $O;
}
if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
$errorCode = json_last_error();
if(isset(self::$_JSONParseError[$errorCode])){
throw new Exception(self::$_JSONParseError[$errorCode], 5);
}
}
throw new Exception('JSON parse error', 5);
}
private static $_JSONParseError = array(
JSON_ERROR_NONE=>'No error has occurred',
JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded',
JSON_ERROR_CTRL_CHAR=>'Control character error, possibly incorrectly encoded',
JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON',
JSON_ERROR_SYNTAX=>'Syntax error',
JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded',
);
}
ip地址查询
原创
©著作权归作者所有:来自51CTO博客作者joshua317的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
获取IP地址
端点(API接口)访问获取IP地址!
IP Java SpringBoot\ -
查询域名的ip地址
有时访问某些网站时解析的ip地址是错误的,比如有的解析为127.0.0.1,就会导致网站无法访问 解决方法: 在http
other ip地址 github linux -
ip地址查询 java Ip地址查询方法
电脑无法运转时,我们需要别人的帮忙的话,那就需要知道自己电脑的IP地址是什么。但是很多人不知道该从电脑哪里找到IP地址。电脑ip地址查询就看下面2种方法,让你轻松就能Get到技巧!
ip地址查询 java tcp/ip 服务器 网络协议 IP