java - 我正在尝试从 JAVA 中的 ip 地址获取位置信息,但我收到了 java.net.SocketException : Connection reset error

标签 java sockets servlets geolocation javaquery

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/

相关文章:

java - ResultSet 位置不正确,也许您需要调用 next

java - 服务器发送事件 HTML5 错误(此 url 中的资源不是文本)

javascript - 如何在两个或多个 jsp 页面中检索选定的选项标记值

Java:方法不适用于参数

Java KeyListener 不起作用

java - 如何安全地同时修改 Java HashMaps 中的值?

python - 通过套接字发送文件

c - 将客户端绑定(bind)到本地端口

sockets - Opc-UA 通信协议(protocol),客户端如何理解可用的服务器节点?

java - 如何更正 Java LinkageError 异常?