import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javaQuery.importClass.javaQueryBundle;
import javaQuery.j2ee.GeoLocation;
/**
* Servlet implementation class IP
*/
public class IP extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public IP() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String ipAddress = request.getRemoteAddr();
System.out.println(ipAddress);
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//Print out the IP address of the caller
out.println(request.getRemoteAddr());
GeoLocation $gl = javaQueryBundle.createGeoLocation();
System.out.println(ipAddress);
$gl.MAPTargetByIP(ipAddress, "test");
System.out.println($gl.Latitude);
System.out.println($gl.Longitude);
System.out.println($gl.Country);
System.out.println($gl.City);
System.out.println($gl.State);
System.out.println($gl.GoogleMap_URL);
System.out.println($gl.GoogleMap_URL_Bubble);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
这是我的代码片段。我正在获取访问者的 IP 地址,但不是位置信息。 它给 : java.net.SocketException:连接重置 在 java.net.SocketInputStream.read(未知来源) 在 java.net.SocketInputStream.read(未知来源)
最佳答案
要告诉 java 代码所有 HTTP 请求都应通过代理路由,请使用以下代码段:
System.setProperty("http.proxyHost", "proxyHost");
System.setProperty("http.proxyPort", "proxyPort");
validator authenticator = new Authenticator() {
公共(public) PasswordAuthentication getPasswordAuthentication() {
return (new PasswordAuthentication("USERNAME","PASSWORD".toCharArray()));
}
};
Authenticator.setDefault(authenticator);
System.setProperty 设置代理主机和端口。 Authenticator 应该是您的公司用户名和密码。现在应该可以了。
关于java - 我正在尝试从 JAVA 中的 ip 地址获取位置信息,但我收到了 java.net.SocketException : Connection reset error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23284484/