Home  >  Article  >  php教程  >  Taobao IP address query interface

Taobao IP address query interface

WBOY
WBOYOriginal
2016-08-04 08:54:542385browse

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. d648d7d84be222d28bc97c69767ed12f
<?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',
	);
}
<?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',
	);
}
Statement:
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
Previous article:PHP base boardNext article:PHP base board