Spring Boot中的RestTemplate获取客户端公网ip和局域网ip
时间: 2023-11-24 11:39:59 浏览: 303
SpringBoot系列之RestTemplate使用示例
5星 · 资源好评率100%
在Spring Boot中使用RestTemplate发送请求时,可以通过以下方式获取客户端公网IP和局域网IP:
1. 获取公网IP
在发送请求之前,可以通过访问外部接口获取公网IP。例如,可以使用以下代码:
```
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.getForObject("http://checkip.amazonaws.com", String.class);
String publicIp = response.trim();
```
这个代码将会访问Amazon AWS的checkip服务,返回当前请求的公网IP地址。
2. 获取局域网IP
在Spring Boot应用程序中,可以通过 HttpServletRequest 接口获取局域网IP地址。例如,可以使用以下代码:
```
@RestController
public class MyController {
@Autowired
private HttpServletRequest request;
@GetMapping("/ip")
public String getIp() {
String localIp = request.getLocalAddr();
return "Local IP: " + localIp;
}
}
```
这个代码将会返回当前请求的局域网IP地址。
需要注意的是,局域网IP地址只能在局域网内部使用,无法被公网访问。因此如果需要在公网中获取客户端IP地址,需要使用公网IP地址。
阅读全文