查询用户IP所在地服务接口(淘宝)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 查询用户IP所在地服务接口(淘宝)

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

 2015/3/4 12:13:35  jsczxy2  程序员俱乐部  我要评论(0)
  • 摘要:importjava.io.BufferedReader;importjava.io.DataOutputStream;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjava.net.URL;importorg.json.JSONObject;publicclassAddressUtils{/***@paramargs*/publicstaticvoidmain(String[]args)
  • 标签:
class="java">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();
		
	}

}

?

  • 相关文章
发表评论
用户名: 匿名