java的socket可以使用socket4或socket5代理,但是不用使用http代理,
有否能人知道怎么实现?或提供http协议与socket协议的转换也行.

解决方案 »

  1.   

    以前偶然见过一个PAW的,实现了java http代理。具体源码没有看到过。楼主自己去查查吧。
      

  2.   

    try
    System.getProperties().setProperty( "http.proxyHost", ip );
    System.getProperties().setProperty( "http.proxyPort", port );
    其中ip和port都是string
      

  3.   

    2楼,这种做法是不行的...  public static void main(String[] args) {
    // TODO Auto-generated method stub
    // smtp.sohu.com 220.181.26.195
    String server = "66.98.238.8";
    int port = 3128;

    String host = "smtp.sohu.com";
    String request = "GET   " + host + "/   HTTP/1.0\r\nHost:   " + host + "\r\nConnection:   Close\r\nProxy-Authorization:   true\r\n\r\n";
    try {
    Socket socket = new Socket(server, port);
    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

    out.write(request);
    out.newLine();
    out.flush();

    String line = null;
    while ( (line = in.readLine()) != null ) {
    System.out.println(line);
    }

    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
                      }   这样做可以链接到代理服务器,但是得到的结果是 squid 不支持 smtp和pop3协议...我的目的就是  socket  ->(by http proxy) -> smtp / pop3
      

  4.   

    看来还是要http代理支持smtp和pop3才行,,,有无别的法子
      

  5.   

    要想通过 http 代理访问非 http 协议的服务器,要求 http 代理支持 CONNECT 命令。
      

  6.   

    http的代理必须支持connect指令
      

  7.   

    thx maquan('ma:kju) thx all