package com.sp.util;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONObject;
/**
* wwd
* @ClassName: AddressUtils
* @Description: 根据ip获取城市信息
* @author A18ccms a18ccms_gmail_com
* @date 2015-5-15 下午3:04:15
*
*/
public class AddressUtils {
/**
* 获取地址
*
* @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公司
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();
}
public static void main(String[] args) {
AddressUtils addressUtils = new AddressUtils();
List list = new ArrayList();
String ss = "219.157.18.184,123.5.231.192,127.0.0.1,119.251.39.125,171.13.225.189,110.211.3.145,27.43.178.95,120.43.202.135,113.132.142.123,60.223.221.20,183.63.97.77,123.161.114.5,144.76.29.162,116.234.84.99,182.92.1.233,112.126.74.55,139.205.206.208,123.4.127.162,175.43.89.240,114.244.135.13,183.131.144.204,49.89.53.105,112.96.130.120,219.131.40.17,202.118.74.168,183.6.91.137,183.6.90.28,175.43.90.148,218.77.82.149,223.104.10.18";
String []str = ss.split(",");
for(String ip1 : str){
String ip = ip1;
String address = "";
try {
address = addressUtils.getAddress("ip=" + ip, "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ip==" + ip+",地址=="+address);
}
}
}
根据ip获取城市信息
猜你喜欢
转载自wang94777600.iteye.com/blog/2218416
今日推荐
周排行