我正在尝试使用我服务器上的java来获取用户机器的ipAddress。
我使用了以下代码,它在本地工作正常。
URL url = new URL("http://www.geoplugin.net/json.gp?jsoncallback=?");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
}
}
使用此类,响应会在我的本地Web应用程序中显示ip。(localhost:8080 / myApp / getIp)
我将此战争部署到我的AWS服务器,并尝试运行servlet。但这始终仅显示AWS IP地址。 (MYIP:8080 /对myApp / getIp)
它没有显示我的机器IP。
我的代码中出现了什么错误,有人可以协助吗?
答案 0 :(得分:1)
ServletRequest.getRemoteAddr()OR
getRemoteHost()和getRemotePort()
应该返回实际客户端的详细信息
答案 1 :(得分:0)
如果您想获得客户端IP,即用户通过浏览器访问您的网络应用程序,那么您可以使用(客户端脚本)javascript来执行此操作。下面是相同的简单示例。
function show(response) {
console.log(response);
var html = 'Something went wrong !';
if (200 == response.geoplugin_status) {
html = 'Got your ip as: ' + response.geoplugin_request;
}
document.getElementById('ip').innerHTML = html;
}
var script = document.createElement('script');
script.async = true;
script.src = 'http://www.geoplugin.net/json.gp?jsoncallback=show';
document.getElementById('ip').appendChild(script);
<div id='ip'>Fetching IP ...</div>