我现在有个客户端处于内网 要通过http代理  使用nio TCP连接访问外部网络的服务器
代码如下:SocketAddress proxyAddress = new InetSocketAddress( "192.168.180.148" , 888 ) ; -- 内部网络的HTTP代理的IP 和端口
Proxy proxy = new Proxy( Proxy.Type.HTTP , proxyAddress ) ;
Socket s = new Socket( proxy ) ;       -------- 这个报错 
s.setReuseAddress( true ) ;
tcpclientSocketChannel = s.getChannel().open() ;
this.tcpclientSocketChannel.connect( new InetSocketAddress(  外部网络的IP 和端口  ) ) ;
错误
   java.lang.IllegalArgumentException: Invalid Proxy
                     at java.net.Socket.<init>(Socket.java:122)
请问这样写有错吗? 如果不行还有别的办法吗?

解决方案 »

  1.   

    代理类型无效 Socket 只能使用 Proxy.Type.SOCKS类型的代理
      

  2.   

    我现在只有http代理啊   要怎么办啊??????????
      

  3.   

    URL.openConnection(Proxy proxy) 这个方法可以使用Proxy.Type.HTTP类型的代理
      

  4.   

    这是我写的使用代理访问连接的代码,你参考看看把
    public void run() {
    SocketAddress addr = new InetSocketAddress("XXX.XXX.com",8080);
    Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);  


    for (int i = 0; i < 100; i++) {
    // InputStream input = new URL("http://XXXXXX/XXX/XXX").openConnection().getInputStream();
    try {


    URL baseURL = new URL(address);
    HttpURLConnection uc = (HttpURLConnection) baseURL.openConnection(proxy);
    uc.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.2) Gecko/20090803 Fedora/3.5.2-2.fc11 Firefox/3.5.2");
    InputStream input = uc.getInputStream();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }


      }
      

  5.   

    我这里的要求不能这么做的 不是url我是要通过http代理访问外部网是 再要在用TCP连接服务器 发数据啊~~