- 项目测试时有测试ip,之后给分配公网ip.那么怎么获取公网ip呢
- 通过一个网络代理去获取对应的信息,返回的是一个Json,需要建立一个类接收,之后在取出来
- 代码
接收的类
import java.io.Serializable;
public class IpMessage implements Serializable{
private String ip;
private String address;
public IpMessage() {
}
public IpMessage(String ip, String address) {
this.ip = ip;
this.address = address;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
对应的接口
public interface GetIPAddressService {
String getNetIp();
}
对应的实现类
@Service
@Transactional(rollbackFor = Exception.class)
public class GetIPAddressServiceImpl implements GetIPAddressService {
public static String getRemoteIp() {
InputStream in = null;
StringBuffer buffer = new StringBuffer();
try {
URL url = new URL("http://ip.chinaz.com/getip.aspx"); //创建 URL
in = url.openStream(); // 打开到这个URL的流
BufferedReader reader = new BufferedReader(new InputStreamReader(in,"UTF-8"));
String inputLine = "";
while ((inputLine = reader.readLine()) != null)
{
buffer.append(inputLine);
}
}catch (Exception e) {
e.printStackTrace();
} finally {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return buffer.toString();
}
@Override
public String getNetIp() {
JsonTool JsonTool = new JsonTool();
IpMessage ipMessage = JsonTool.toBean(IpMessage.class,getRemoteIp());
return ipMessage.getIp();
}
}
调用getNetIp()方法就可以得到对应的ip。