使用java处理HTTPS Tunnling

时间:2013-05-24 13:37:18

标签: java http proxy connect

我正在尝试构建代理服务器,最近我正在开发https。正如此post中所述。我试图隧道连接请求。我的代码如下:

private boolean handleConnect(HttpServletRequest req,HttpServletResponse response){
    String uri=req.getRequestURI();
    String port="";
    String host="";
    int c=uri.indexOf(":");
    if (c >= 0){
        port = uri.substring(c + 1);
        host = uri.substring(0,c);
        if (host.indexOf('/') > 0)
            host = host.substring(host.indexOf('/') + 1);
    }
    // Make Asyncronous connection
    try{
        InetSocketAddress inetAddress = new InetSocketAddress(host,Integer.parseInt(port));
        {
            InputStream in=req.getInputStream();
            OutputStream out=response.getOutputStream();
            if(true){
                Socket sock=new Socket(host,Integer.parseInt(port));
                IO.copy(in, sock.getOutputStream());
                IO.copy(sock.getInputStream(), out);
                if(!sock.getKeepAlive()){
                    sock.close();
                }

            }
        }
    }
    catch(Exception ex){
        ex.printStackTrace();

        return false;
    }
    return true;
}

java.net.UnknownHostException: google.com.np的代码结果https://google.com.nphttps://Facebook.com的超时结果。这是为什么 ?? 请建议隧道连接HTTP请求的最佳方法。

1 个答案:

答案 0 :(得分:1)

你的UnknownHostException是由于一个不存在的主机或一个配置错误的DNS,以及你的网络连接问题的连接超时,这两者都不是主题,但你不能用这种方式写一个正确的代理。您需要为每个连接启动两个线程,一个用于复制每个方向的字节。