`
jsczxy2
  • 浏览: 1275035 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

查询用户IP所在地服务接口(淘宝)

阅读更多
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.json.JSONObject;

public class AddressUtils {

	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		AddressUtils addressUtils = new AddressUtils();
		
		  String ip = "118.213.176.78";
		  
		  String address = "";
		  
		  try {
			  
		   address = addressUtils.getAddress("ip="+ip, "utf-8");
		   
		  } catch (Exception e) {
			  
			  e.printStackTrace();
		  }
		  
		  System.out.println(address);
		  

	}
	/**
	 * 获取地址
	 * @param params
	 * @param encoding
	 * @return
	 * @throws Exception
	 */
	public String getAddress(String params, String encoding) throws Exception{
		
		String path = "http://ip.taobao.com/service/getIpInfo.php";
		
		String returnStr = this.getRs(path, params, encoding);
		
		JSONObject json=null;
		
		if(returnStr != null){
			
			json = new JSONObject(returnStr);
			
			if("0".equals(json.get("code").toString())){
				
				StringBuffer buffer = new StringBuffer();
				
				//buffer.append(decodeUnicode(json.optJSONObject("data").getString("country")));//国家
				
				//buffer.append(decodeUnicode(json.optJSONObject("data").getString("area")));//地区
				
				buffer.append(decodeUnicode(json.optJSONObject("data").getString("region")));//省份
				
				buffer.append(decodeUnicode(json.optJSONObject("data").getString("city")));//市区
				
				buffer.append(decodeUnicode(json.optJSONObject("data").getString("county")));//地区
				
				buffer.append(decodeUnicode(json.optJSONObject("data").getString("isp")));//ISP公司
				
				System.out.println(buffer.toString());
				
				return buffer.toString();
				
			}else{
				
				return "获取地址失败�?";
				
			}
			
		}
		
		return null;
		
	}
	/**
	 * 从url获取结果
	 * @param path
	 * @param params
	 * @param encoding
	 * @return
	 */
	public String getRs(String path, String params, String encoding){
		
		URL url = null;
		
		HttpURLConnection connection = null;
			
		try {
			
			url = new URL(path);
				
			connection = (HttpURLConnection)url.openConnection();// 新建连接实例
				
			connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫�?
			
			connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫�?
			
			connection.setDoInput(true);// 是否打开输出�? true|false
			
			connection.setDoOutput(true);// 是否打开输入流true|false
			
			connection.setRequestMethod("POST");// 提交方法POST|GET
			
			connection.setUseCaches(false);// 是否缓存true|false
			
			connection.connect();// 打开连接端口
			
			DataOutputStream out = new DataOutputStream(connection.getOutputStream());
			
			out.writeBytes(params);
			
			out.flush();
			
			out.close();
			
			BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),encoding));
			
			StringBuffer buffer = new StringBuffer();
			
			String line = "";
			
			while ((line = reader.readLine())!= null) {
				
				buffer.append(line);
				
			}
			
			reader.close();
			
			return buffer.toString();
			
		} catch (Exception e) {
			
			e.printStackTrace();
			
		}finally{
			
			connection.disconnect();// 关闭连接
			
		}
		
		return null;
	}
	/**
	 * 字符转码
	 * @param theString
	 * @return
	 */
	public static String decodeUnicode(String theString){
		
		char aChar;
		
		int len = theString.length();
		
		StringBuffer buffer = new StringBuffer(len);
		
		for (int i = 0; i < len;) {
			
			aChar = theString.charAt(i++);
			
			if(aChar == '\\'){
				
				aChar = theString.charAt(i++);
			
				if(aChar == 'u'){
					
					int val = 0;
					
					for(int j = 0; j < 4; j++){
						
						aChar = theString.charAt(i++);
						
						switch (aChar) {
						
						case '0':
							
						case '1':
							
						case '2':
							
						case '3':
							
						case '4':
						
						case '5':
							
						case '6':
						
						case '7':
							
						case '8':
							
						case '9':
							
						val = (val << 4) + aChar - '0';
						
						break;
	
						case 'a':
							
						case 'b':
							
						case 'c':
							
						case 'd':
							
						case 'e':
							
						case 'f':
							
						val = (val << 4) + 10 + aChar - 'a';
						       
						break;
						
						case 'A':
							
						case 'B':
							
						case 'C':
							
						case 'D':
							
						case 'E':
							
						case 'F':
						  
						val = (val << 4) + 10 + aChar - 'A';
						       
						break;
						       
						default:
						
						throw new IllegalArgumentException(
					         
							"Malformed      encoding.");
					    }
						
					}
					
					buffer.append((char) val);
					
					}else{
						
						if(aChar == 't'){
							
							aChar = '\t';
						}
						
						if(aChar == 'r'){
							
							aChar = '\r';
						}
						
						if(aChar == 'n'){
							
							aChar = '\n';
						}
						
						if(aChar == 'f'){
							
							aChar = '\f';
							
						}
						
						buffer.append(aChar);
					}
				
				}else{
					
					buffer.append(aChar);
					
				}
				
			}
		
		return buffer.toString();
		
	}

}

 

分享到:
评论
2 楼 jsczxy2 2015-03-06  
请叫我东哥 写道
请问json = new JSONObject(returnStr);这一句是如何实现的

请下载org.json包:http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm
1 楼 请叫我东哥 2015-03-04  
请问json = new JSONObject(returnStr);这一句是如何实现的

相关推荐

    通过淘宝IP接口获取IP地理位置

    - **淘宝IP接口**:淘宝提供的一项免费服务,允许开发者通过HTTP请求的方式查询指定IP地址对应的地理位置信息。 #### 实现原理 1. **HTTP请求**:向淘宝提供的IP地理位置查询服务发送包含待查询IP地址的HTTP GET...

    java实现根据ip地址获取地理位置的代码分享

    strIP = result.substring(result.indexOf("该IP所在地为:") + "该IP所在地为:".length()); strIP = strIP.substring(strIP.indexOf(":") + 1); String province = strIP.substring(6, strIP.indexOf("省")); ...

    淘宝IP地址库,提供API

    淘宝IP地址库及其API服务,为开发者提供了强大的IP地址解析能力,无论是在网络安全防护、用户行为分析,还是数据统计与分析等方面,都有着广泛的应用前景。通过简单的API调用,即可获取详尽的IP地址相关信息,极大地...

    根据IP地址获取ip所在区域.rar

    "根据IP地址获取ip所在区域.rar"这个资源提供了一个功能,即通过调用淘宝IP地址库的接口,查询到一个IP地址对应的具体地理位置信息,包括国家、运营商、区域代码和运营商代码。淘宝IP地址库是一个庞大的数据库,包含...

    php 根据登陆者的ip获取所在城市

    php 根据登陆者的ip获取所在城市;包含新浪接口;淘宝接口,搜狐接口

    Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】

    在Python2.7中,利用淘宝提供的公开IP接口获取IP地址所在地理位置是一种常见的地理定位方法。淘宝IP库接口提供了一个简单的方式,通过HTTP请求获取指定IP的详细信息,包括国家ID、区域、城市和省份等。以下将详细...

    java开发基于百度API,淘宝API和腾讯IP库(qqwry.dat),通过IP获取区域城市位置,经纬度获取城市地址,城市地址获取经纬度等信息实例

    该demo有多个JAVA实例,分别是基于:百度API,淘宝API和腾讯提供的IP库(qqwry.dat),开发的一个简单直接可以使用的web应用程序,通过Eclipse导入即可在Main方法中测试; 1.百度API已经提供测试ak密钥,实例中有:a....

    免费的ip数据库淘宝IP地址库简介和PHP调用实例

    在淘宝IP地址库提供的服务中,用户可以通过输入IP地址,快速获得该IP所在位置的详细地理信息。服务内容还包括用户可以基于自己的位置和使用的IP地址,对服务内容进行更新。此外,淘宝IP地址库还具有以下优势:它能...

    利用PHP获取网站访客的所在地位置

    【获取网站访客所在地位置】在互联网开发中是一项重要的功能,尤其对于大型网站而言,能够根据用户的位置提供个性化服务,极大地提升了用户体验。例如,58同城等网站在检测到用户所在地后,会自动跳转至相应的城市...

    PHP根据IP判断地区名信息的示例代码

    淘宝也有一个类似的IP查询服务,同样是返回JSON数据。解析后,可以通过对象的方式访问地区信息。 读取和展示返回的地区信息可以这样操作: ```php $array = get_object_vars($res1); foreach ($array as $value) ...

    nali-0.2.tar.gz

    对日志进行分析时,想要同时显示IP所在地以及所属ISP,用脚本获取日志IP再逐条通过第三方接口查询显的很笨拙又要联网查询效率方面可想而知,可参见《使用PHP+淘宝IP地址库接口获得IP所属地理位置》。找到了一款工具...

    淘宝手机网站选择区域效果

    在淘宝手机网站上,这个功能允许用户根据自己的实际所在地或者需要送达的区域来筛选商品,提高购物的便捷性和准确性。 1. **地理定位**:在淘宝手机网站上,选择区域功能往往依赖于设备的GPS或网络IP来获取用户的...

    python实现获取Ip归属地等信息

    ### Python 实现获取IP归属地信息 #### 一、引言 随着互联网技术的发展,IP地址作为网络设备的唯一标识,对于网络安全管理、数据分析等方面具有重要意义。了解IP地址的归属地可以帮助我们更好地进行网络监控、攻击...

    利用PHP获取访客IP、地区位置、浏览器及来源页面等信息

    有多个服务提供此类查询功能,例如淘宝的IP地址查询接口。通过将IP地址附加在特定的URL后面,服务端程序可以返回一个包含地理位置信息的JSON字符串。然后通过PHP中的json_decode函数将JSON字符串解析成PHP数组,就...

    采集阿里巴巴 淘宝信息模块

    本信息模块主要涉及如何有效地采集阿里巴巴和淘宝平台上的信息。 首先,我们需要了解数据采集的基本概念。数据采集是通过各种技术手段,从互联网、数据库或特定接口获取所需信息的过程。在电商平台,这通常涉及到...

Global site tag (gtag.js) - Google Analytics