/** * 构造函数 * * @param policy 端口策略 * @param serverAddress 服务器地址 * @throws IOException 如果构造port失败 */ public TCPHttpPort(IConnectionPolicy policy, InetSocketAddress serverAddress) throws IOException { super(policy); ready = false; remoteClosed = false; remoteAddress = serverAddress; // 创建代理类 proxy = new HttpProxy(this, policy.getProxyUsername(), policy.getProxyPassword()); proxy.setProxyAddress(policy.getProxy()); proxy.setRemoteAddress(serverAddress); channel = (SocketChannel) proxy.channel(); }
public static void main(String[] args) throws Exception { String host; int port; if (args.length == 0) { // Start internal proxy ConnectProxyTunnelServer proxy = new ConnectProxyTunnelServer(); proxy.start(); host = "localhost"; port = proxy.getLocalPort(); out.println("Running with internal proxy: " + host + ":" + port); } else if (args.length == 2) { host = args[0]; port = Integer.valueOf(args[1]); out.println("Running against specified proxy server: " + host + ":" + port); } else { System.err.println("Usage: java HttpProxy [<proxy host> <proxy port>]"); return; } HttpProxy p = new HttpProxy(host, port); p.test(); }
// 获得设置代理的httpClent实例 private CloseableHttpClient getHttpClientWithProxy(HttpProxy proxy) { HttpHost proxyHost = new HttpHost(proxy.getHost(), proxy.getPort()); CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials( new AuthScope(proxy.getHost(), proxy.getPort()), new UsernamePasswordCredentials(proxy.getUser(), proxy.getPassword())); return HttpClients.custom() .setProxy(proxyHost) .setDefaultCredentialsProvider(credentialsProvider) .build(); }
/* (non-Javadoc) * @see edu.tsinghua.lumaqq.qq.net.IPort#start() */ public void start() { proxy.start(); }
/* (non-Javadoc) * @see edu.tsinghua.lumaqq.qq.net.IPort#dispose() */ public void dispose() { proxy.dispose(); }
/* (non-Javadoc) * @see edu.tsinghua.lumaqq.qq.IProxyHandler#proxyReady(java.net.InetSocketAddress) */ public void proxyReady(InetSocketAddress bindAddress) throws IOException { ready = true; channel = (SocketChannel) proxy.channel(); ((PortGate) getPool()).getPorter().register(this, SelectionKey.OP_READ); }