我试图从JAVA中的IP地址获取位置信息,但我得到一个java.net.SocketException:连接重置错误

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 } } 

这是我的代码snippest。我正在获取访问者的IP地址,但没有获取位置信息。 它给出:java.net.SocketException:java.net.SocketInputStream.read(未知来源)中java.net.SocketInputStream.read(未知源)的连接重置

要告诉java代码应通过代理路由所有HTTP请求,请使用以下代码段:

System.setProperty("http.proxyHost", "proxyHost"); System.setProperty("http.proxyPort", "proxyPort"); Authenticator authenticator = new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return (new PasswordAuthentication("USERNAME","PASSWORD".toCharArray())); } }; Authenticator.setDefault(authenticator);

System.setProperty设置代理主机和端口。 Authenticator应该是您的公司用户名和密码。 这应该现在有效。

 import java.io.IOException; import java.io.PrintWriter; import java.net.Authenticator; import java.net.PasswordAuthentication; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.maxmind.geoip2.DatabaseReader; import com.maxmind.geoip2.model.*; import com.maxmind.geoip2.record.Location; import com.maxmind.geoip2.record.MaxMind; import com.maxmind.geoip2.record.RepresentedCountry; 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(); System.setProperty("http.proxyHost", "proxyHostName"); System.setProperty("http.proxyPort", "proxyPort"); Authenticator authenticator = new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return (new PasswordAuthentication("USERNAME","PASSWORD".toCharArray())); } }; Authenticator.setDefault(authenticator); // 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.getLocalAddr()); GeoLocation $gl = javaQueryBundle.createGeoLocation(); System.out.println($gl.toString().length()); System.out.println("--"); System.out.println($gl.getMACAddressWindows()); $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 } } 

现在工作正常。