Ip地址解析工具类

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


}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值