我正在尝试读取isp不是本地的设备IP地址。
How to get IP address of the device from code?在这个经过检查的答案中,我给出了WI-FI的局域网IP地址,并提供了不同于互联网上的whatismyip的IP地址。我猜它可能是运营商服务提供商的本地IP。
我如何通过互联网IP地址来回复whatismyip?
public static String getPublicIP() throws IOException
{
Document doc = Jsoup.connect("http://www.checkip.org").get();
return doc.getElementById("yourip").select("h1").first().select("span").text();
}
这个可能有用,但我不想为它添加任何库。
smallBig编辑: http://api.exip.org/?call=ip 它只返回ip,我该如何使用它? 它可靠且寿命长吗?
答案 0 :(得分:0)
如果您不想添加库,请使用URLConnection并自行解析。
答案 1 :(得分:-1)
public void getCurrentIP () {
ip.setText("Please wait...");
try {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://whatismyip.everdot.org/ip");
// HttpGet httpget = new HttpGet("http://whatismyip.com.au/");
// HttpGet httpget = new HttpGet("http://www.whatismyip.org/");
HttpResponse response;
response = httpclient.execute(httpget);
//Log.i("externalip",response.getStatusLine().toString());
HttpEntity entity = response.getEntity();
if (entity != null) {
long len = entity.getContentLength();
if (len != -1 && len < 1024) {
String str=EntityUtils.toString(entity);
//Log.i("externalip",str);
ip.setText(str);
} else {
ip.setText("Response too long or error.");
//debug
//ip.setText("Response too long or error: "+EntityUtils.toString(entity));
//Log.i("externalip",EntityUtils.toString(entity));
}
} else {
ip.setText("Null:"+response.getStatusLine().toString());
}
}
catch (Exception e)
{
ip.setText("Error");
}
}