我需要访问一个socket服务端,必须通过代理才可以访问。
请问如何在java socket中设置socket proxy?
一下代码似乎不行:
System.getProperties().put("proxySet","true"); System.getProperties().put("proxyHost","192.168.254.199");
System.getProperties().put("proxyPort","1080");

解决方案 »

  1.   

    没用过代理都是直接使用的
    关注ING
      

  2.   

    在 Java 中代理服务器的基本设置是通过设置系统属性来完成的。而代理服务器的验证则是通过设置 Http 请求头来完成的。 
      下面的是一个简单的例子供大家参考: 
      
      // 根据地址 url 打开 Http 连接 
      HttpURLConnection con = (HttpURLConnection)( new URL( url ) ).openConnection(); 
      if (proxy.hasProxy()) { 
      // 注意: 如果 proxySet 为 false 时,依然设置了 proxyHost 和 proxyPort,代理设置仍会起作用。 
      // 如果 proxyPort 设置有问题,代理设置不会起作用。 
      System.getProperties().put( "proxySet", "true" ); 
      System.getProperties().put( "proxyHost", proxy.getProxyHost() ); 
      System.getProperties().put( "proxyPort", String.valueOf( proxy.getProxyPort() ) ); 
      
      // 如果需要代理服务器验证,在 Http 请求头中加入 Proxy-Authorization 头, 
      // 格式为: "Basic " + ("代理服务器用户名:密码"的 BASE64 编码) 
      if (proxy.needAuth()) { 
      con.setRequestProperty( "Proxy-Authorization", "Basic " + Encoder.base64Encode( proxy.getProxyUser() + ":" + proxy.getProxyPass() ) ); 
      } 
      }
      

  3.   

    自己解决了:
    System.getProperties().put("socksProxySet","true");
    System.getProperties().put("socksProxyHost","192.168.254.212");
    System.getProperties().put("socksProxyPort","1080"); 
    proxySet改为:socksProxySet