转载:http://www.2cto.com/kf/201507/425845.html
向原作者致敬,转载只是给自己留一个笔记,没有什么其他的商业用途,如有问题请联系本人删除即可。
亲测代码需要细节调整,是可以运行的,最后得到的是中文的utf-8编码,最后需要我们得到city字段后然后在通过
URLDecoder.decode("xxxxxx", "UTF-8");解析即可。
<span style=
"font-size:18px;"
>
// 获取外网IP
public
static
String GetNetIp() {
URL infoUrl =
null
;
InputStream inStream =
null
;
try
{
// infoUrl = new URL(http://city.ip138.com/city0.asp);
infoUrl =
new
URL(http:
//ip38.com);
URLConnection connection = infoUrl.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection) connection;
int
responseCode = httpConnection.getResponseCode();
if
(responseCode == HttpURLConnection.HTTP_OK) {
inStream = httpConnection.getInputStream();
BufferedReader reader =
new
BufferedReader(
new
InputStreamReader(inStream, utf-
8
));
StringBuilder strber =
new
StringBuilder();
String line =
null
;
while
((line = reader.readLine()) !=
null
)
strber.append(line +
);
inStream.close();
// 从反馈的结果中提取出IP地址
// int start = strber.indexOf([);
// Log.d(zph, + start);
// int end = strber.indexOf(], start + 1);
// Log.d(zph, + end);
line = strber.substring(
378
,
395
);
line.replaceAll( , );
return
line;
}
}
catch
(MalformedURLException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
return
null
;
}</span>
|
另有一个获取外网IP的高端方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
public
static
String GetNetIp()
{
String IP = ;
try
{
String address = http:
//ip.taobao.com/service/getIpInfo2.php?ip=myip;
URL url =
new
URL(address);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setUseCaches(
false
);
if
(connection.getResponseCode() == HttpURLConnection.HTTP_OK)
{
InputStream in = connection.getInputStream();
// 将流转化为字符串
BufferedReader reader =
new
BufferedReader(
new
InputStreamReader(in));
String tmpString = ;
StringBuilder retJSON =
new
StringBuilder();
while
((tmpString = reader.readLine()) !=
null
)
{
retJSON.append(tmpString +
);
}
JSONObject jsonObject =
new
JSONObject(retJSON.toString());
String code = jsonObject.getString(code);
if
(code.equals(
0
))
{
JSONObject data = jsonObject.getJSONObject(data);
IP = data.getString(ip) + ( + data.getString(country)
+ data.getString(area) + 区
+ data.getString(region) + data.getString(city)
+ data.getString(isp) + );
Log.e(提示, 您的IP地址是: + IP);
}
else
{
IP = ;
Log.e(提示, IP接口异常,无法获取IP地址!);
}
}
else
{
IP = ;
Log.e(提示, 网络连接异常,无法获取IP地址!);
}
}
catch
(Exception e)
{
IP = ;
Log.e(提示, 获取IP地址时出现异常,异常信息是: + e.toString());
}
return
IP;
}
|