Home > php教程 > php手册 > body text

Taobao IP address query interface

WBOY
Release: 2016-08-04 08:54:54
Original
2432 people have browsed it

Taobao provides a very useful IP geographic information query interface. Here: http://ip.taobao.com/ TaobaoIPQuery2 This class will greatly simplify related information query. None ?php/* Usage: * $IPInfo = TaobaoIPQuery2::getIPInfo('IPAddress'); */Class TaobaoIPQuery2{private static $_reques

Taobao provides a very useful IP geographic information query interface.
Here: http://ip.taobao.com/
TaobaoIPQuery2 This class will greatly simplify related information query.
<?php
/* Usage:
 * $IPInfo = TaobaoIPQuery2::getIPInfo('IPAddress');
 */
Class TaobaoIPQuery2{
	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',
	);
}
Copy after login
<?php
Class TaobaoIPQuery2{
	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',
	);
}
Copy after login
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template