您的位置:首页 > 编程语言 > Java开发

(java功能篇)通过百度获取IP地址对应的经纬度

2013-08-25 22:15 537 查看
/**

* 获取指定IP对应的经纬度(为空返回当前机器经纬度)

*

* @param ip

* @return

*/

public static String[] getIPXY(String ip) {

String ak = "百度申请的Key";

if (null == ip) {

ip = "";

}

try {

URL url = new URL("http://api.map.baidu.com/location/ip?ak=" + ak

+ "&ip=" + ip + "&coor=bd09ll");

InputStream inputStream = url.openStream();

InputStreamReader inputReader = new InputStreamReader(inputStream);

BufferedReader reader = new BufferedReader(inputReader);

StringBuffer sb = new StringBuffer();

String str;

do {

str = reader.readLine();

sb.append(str);

} while (null != str);

str = sb.toString();

if (null == str || str.isEmpty()) {

return null;

}

// 获取坐标位子

int index = str.indexOf("point");

int end = str.indexOf("}}", index);

if (index == -1 || end == -1) {

return null;

}

str = str.substring(index - 1, end + 1);

if (null == str || str.isEmpty()) {

return null;

}

String[] ss = str.split(":");

if (ss.length != 4) {

return null;

}

String x = ss[2].split(",")[0];

String y = ss[3];

x = x.substring(x.indexOf("\"") + 1, x.indexOf("\"", 1));

y = x.substring(y.indexOf("\"") + 1, y.indexOf("\"", 1));

return new String[] { x, y };

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: