package com.kitsmart.mm.util;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import com.alibaba.fastjson.JSONObject;
public class AddressUtil {
public static void main(String[] args) {
String ip = "58.83.156.1";
// String ip = "121.43.255.255";
// String ip = "127.0.0.1";
// String ip = "7.168.7.127";
// String ip = "192.168.203.1";
// String ip = "61.135.169.123";
JSONObject json = AddressUtil.getAddressDetail(ip);
String address = AddressUtil.getAddressByName(json, "province");
System.out.println("sss====" + address);
}
/**
*
* @param ip
* @param name
* @return
*/
public static String getAddressByName(JSONObject addressJson, String name) {
String result = addressJson.getString(name);
if (null == result || "".equals(result)) {
result = "其他地区";
}
return result;
}
public static JSONObject getAddressDetail(String ip) {
JSONObject json = new JSONObject();
String returnStr = getJsonContent("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" + ip);
if (returnStr != null && !"".equals(returnStr)) {
if ("-2".equals(returnStr) || "-1".equals(returnStr)) {
} else {
json = JSONObject.parseObject(returnStr);
}
}
if (json.size() == 0) {
returnStr = getJsonContent("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip);
System.out.println(returnStr);
if (returnStr != null && !"".equals(returnStr)) {
json = JSONObject.parseObject(returnStr);
}
}
return json;
}
public static String getJsonContent(String urlStr) {
try {// 获取HttpURLConnection连接对象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
// 设置连接属性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
// 获取相应码
int respCode = httpConn.getResponseCode();
if (respCode == 200) {
return ConvertStream2Json(httpConn.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
private static String ConvertStream2Json(InputStream inputStream) {
String jsonStr = "";
// ByteArrayOutputStream相当于内存输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 将输入流转移到内存输出流中
try {
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
out.write(buffer, 0, len);
}
// 将内存流转换为字符串
jsonStr = new String(out.toByteArray(), "utf-8");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
/**
* 字符转码
*
* @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();
}
}
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import com.alibaba.fastjson.JSONObject;
public class AddressUtil {
public static void main(String[] args) {
String ip = "58.83.156.1";
// String ip = "121.43.255.255";
// String ip = "127.0.0.1";
// String ip = "7.168.7.127";
// String ip = "192.168.203.1";
// String ip = "61.135.169.123";
JSONObject json = AddressUtil.getAddressDetail(ip);
String address = AddressUtil.getAddressByName(json, "province");
System.out.println("sss====" + address);
}
/**
*
* @param ip
* @param name
* @return
*/
public static String getAddressByName(JSONObject addressJson, String name) {
String result = addressJson.getString(name);
if (null == result || "".equals(result)) {
result = "其他地区";
}
return result;
}
public static JSONObject getAddressDetail(String ip) {
JSONObject json = new JSONObject();
String returnStr = getJsonContent("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" + ip);
if (returnStr != null && !"".equals(returnStr)) {
if ("-2".equals(returnStr) || "-1".equals(returnStr)) {
} else {
json = JSONObject.parseObject(returnStr);
}
}
if (json.size() == 0) {
returnStr = getJsonContent("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip);
System.out.println(returnStr);
if (returnStr != null && !"".equals(returnStr)) {
json = JSONObject.parseObject(returnStr);
}
}
return json;
}
public static String getJsonContent(String urlStr) {
try {// 获取HttpURLConnection连接对象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
// 设置连接属性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
// 获取相应码
int respCode = httpConn.getResponseCode();
if (respCode == 200) {
return ConvertStream2Json(httpConn.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
private static String ConvertStream2Json(InputStream inputStream) {
String jsonStr = "";
// ByteArrayOutputStream相当于内存输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 将输入流转移到内存输出流中
try {
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
out.write(buffer, 0, len);
}
// 将内存流转换为字符串
jsonStr = new String(out.toByteArray(), "utf-8");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
/**
* 字符转码
*
* @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();
}
}