根据ip获取城市信息

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);
}





}
}

猜你喜欢

转载自wang94777600.iteye.com/blog/2218416